mirror of
https://github.com/apache/superset.git
synced 2026-04-07 18:35:15 +00:00
204 lines
7.2 KiB
Markdown
204 lines
7.2 KiB
Markdown
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
|
|
This is the public documentation site for Superset, built using
|
|
[Docusaurus 3](https://docusaurus.io/). See the
|
|
[Developer Portal](https://superset.apache.org/developer_portal/contributing/development-setup#documentation)
|
|
for documentation on contributing to documentation.
|
|
|
|
## Version Management
|
|
|
|
The Superset documentation site uses Docusaurus versioning with three independent versioned sections:
|
|
|
|
- **Main Documentation** (`/docs/`) - Core Superset documentation
|
|
- **Developer Portal** (`/developer_portal/`) - Developer guides and tutorials
|
|
- **Component Playground** (`/components/`) - Interactive component examples (currently disabled)
|
|
|
|
Each section maintains its own version history and can be versioned independently.
|
|
|
|
### Creating a New Version
|
|
|
|
To create a new version for any section, use the Docusaurus version command with the appropriate plugin ID or use our automated scripts:
|
|
|
|
#### Using Automated Scripts (Required)
|
|
|
|
**⚠️ Important:** Always use these custom commands instead of the native Docusaurus commands. These scripts ensure that both the Docusaurus versioning system AND the `versions-config.json` file are updated correctly.
|
|
|
|
```bash
|
|
# Main Documentation
|
|
yarn version:add:docs 1.2.0
|
|
|
|
# Developer Portal
|
|
yarn version:add:developer_portal 1.2.0
|
|
|
|
# Component Playground (when enabled)
|
|
yarn version:add:components 1.2.0
|
|
```
|
|
|
|
**Do NOT use** the native Docusaurus commands directly (`yarn docusaurus docs:version`), as they will:
|
|
- ❌ Create version files but NOT update `versions-config.json`
|
|
- ❌ Cause versions to not appear in dropdown menus
|
|
- ❌ Require manual fixes to synchronize the configuration
|
|
|
|
### Managing Versions
|
|
|
|
#### With Automated Scripts
|
|
The automated scripts handle all configuration updates automatically. No manual editing required!
|
|
|
|
#### Manual Configuration
|
|
If creating versions manually, you'll need to:
|
|
|
|
1. **Update `versions-config.json`** (or `docusaurus.config.ts` if not using dynamic config):
|
|
- Add version to `onlyIncludeVersions` array
|
|
- Add version metadata to `versions` object
|
|
- Update `lastVersion` if needed
|
|
|
|
2. **Files Created by Versioning**:
|
|
When a new version is created, Docusaurus generates:
|
|
- **Versioned docs folder**: `[section]_versioned_docs/version-X.X.X/`
|
|
- **Versioned sidebars**: `[section]_versioned_sidebars/version-X.X.X-sidebars.json`
|
|
- **Versions list**: `[section]_versions.json`
|
|
|
|
Note: For main docs, the prefix is omitted (e.g., `versioned_docs/` instead of `docs_versioned_docs/`)
|
|
|
|
3. **Important**: After adding a version, restart the development server to see changes:
|
|
```bash
|
|
yarn stop
|
|
yarn start
|
|
```
|
|
|
|
### Removing a Version
|
|
|
|
#### Using Automated Scripts (Recommended)
|
|
```bash
|
|
# Main Documentation
|
|
yarn version:remove:docs 1.0.0
|
|
|
|
# Developer Portal
|
|
yarn version:remove:developer_portal 1.0.0
|
|
|
|
# Component Playground
|
|
yarn version:remove:components 1.0.0
|
|
```
|
|
|
|
#### Manual Removal
|
|
To manually remove a version:
|
|
|
|
1. **Delete the version folder** from the appropriate location:
|
|
- Main docs: `versioned_docs/version-X.X.X/` (no prefix for main)
|
|
- Developer Portal: `developer_portal_versioned_docs/version-X.X.X/`
|
|
- Components: `components_versioned_docs/version-X.X.X/`
|
|
|
|
2. **Delete the version metadata file**:
|
|
- Main docs: `versioned_sidebars/version-X.X.X-sidebars.json` (no prefix)
|
|
- Developer Portal: `developer_portal_versioned_sidebars/version-X.X.X-sidebars.json`
|
|
- Components: `components_versioned_sidebars/version-X.X.X-sidebars.json`
|
|
|
|
3. **Update the versions list file**:
|
|
- Main docs: `versions.json`
|
|
- Developer Portal: `developer_portal_versions.json`
|
|
- Components: `components_versions.json`
|
|
|
|
4. **Update configuration**:
|
|
- If using dynamic config: Update `versions-config.json`
|
|
- If using static config: Update `docusaurus.config.ts`
|
|
|
|
5. **Restart the server** to see changes
|
|
|
|
### Version Configuration Examples
|
|
|
|
#### Main Documentation (default plugin)
|
|
```typescript
|
|
docs: {
|
|
includeCurrentVersion: true,
|
|
lastVersion: 'current', // Makes /docs/ show Next version
|
|
onlyIncludeVersions: ['current', '1.1.0', '1.0.0'],
|
|
versions: {
|
|
current: {
|
|
label: 'Next',
|
|
path: '', // Empty path for default routing
|
|
banner: 'unreleased',
|
|
},
|
|
'1.1.0': {
|
|
label: '1.1.0',
|
|
path: '1.1.0',
|
|
banner: 'none',
|
|
},
|
|
},
|
|
}
|
|
```
|
|
|
|
#### Developer Portal & Components (custom plugins)
|
|
```typescript
|
|
{
|
|
id: 'developer_portal',
|
|
path: 'developer_portal',
|
|
routeBasePath: 'developer_portal',
|
|
includeCurrentVersion: true,
|
|
lastVersion: '1.1.0', // Default version
|
|
onlyIncludeVersions: ['current', '1.1.0', '1.0.0'],
|
|
versions: {
|
|
current: {
|
|
label: 'Next',
|
|
path: 'next',
|
|
banner: 'unreleased',
|
|
},
|
|
'1.1.0': {
|
|
label: '1.1.0',
|
|
path: '1.1.0',
|
|
banner: 'none',
|
|
},
|
|
},
|
|
}
|
|
```
|
|
|
|
### Best Practices
|
|
|
|
1. **Version naming**: Use semantic versioning (e.g., 1.0.0, 1.1.0, 2.0.0)
|
|
2. **Version banners**: Use `'unreleased'` for development versions, `'none'` for stable releases
|
|
3. **Limit displayed versions**: Use `onlyIncludeVersions` to show only relevant versions
|
|
4. **Test locally**: Always test version changes locally before deploying
|
|
5. **Independent versioning**: Each section can have different version numbers and release cycles
|
|
|
|
### Troubleshooting
|
|
|
|
#### Version Not Showing After Creation
|
|
|
|
If you accidentally used `yarn docusaurus docs:version` instead of `yarn version:add`:
|
|
1. **Problem**: The version files were created but `versions-config.json` wasn't updated
|
|
2. **Solution**: Either:
|
|
- Revert the changes: `git restore versions.json && rm -rf versioned_docs/ versioned_sidebars/`
|
|
- Then use the correct command: `yarn version:add:docs <version>`
|
|
|
|
For other issues:
|
|
- **Restart the server**: Changes to version configuration require a server restart
|
|
- **Check config file**: Ensure `versions-config.json` includes the new version
|
|
- **Verify files exist**: Check that versioned docs folder was created
|
|
|
|
#### Broken Links in Versioned Documentation
|
|
When creating a new version, links in the documentation are preserved as-is. Common issues:
|
|
- **Cross-section links**: Links between sections (e.g., from developer_portal to docs) need to be version-aware
|
|
- **Absolute vs relative paths**: Use relative paths within the same section
|
|
- **Version-specific URLs**: Update hardcoded URLs to use version variables
|
|
|
|
To fix broken links:
|
|
1. Use `type: 'doc'` with `docId` for version-aware navigation in navbar
|
|
2. Use relative paths within the same documentation section
|
|
3. Test all versions after creation to identify broken links
|