功能配置
页面摘要:
/config/features中的 future flags(未来标志)用于切换实验性的 Strapi 功能,允许你在自行承担风险的情况下进行早期测试。
config/features.js|ts 文件用于启用功能标记。它包含两类标记:future flags(未来标志),嵌套在 future 对象中,用于启用实验性功能;以及stable flags(稳定标志),位于文件顶层,用于切换已发布功能的行为。
一些即将推出的 Strapi 功能尚未准备向所有用户发布,但 Strapi 仍然为社区用户提供机会,就这些新功能或变更提供早期反馈。借助这些实验性功能,开发者可以灵活地在当前主版本中按需选择并将其新功能与变更集成到自己的 Strapi 应用中,同时也可以帮助我们塑造这些新功能。
这类实验性功能在文档各处用 (功能开关) 徽章标示,徽章中包含要使用的功能标记名称(例如 (功能开关))。启用这些功能需要先启用相应的未来标志。未来标志与处于 alpha 阶段的功能不同之处在于,未来标志默认是禁用的。
启用未来标志需自行承担风险。实验性功能可能会发生变化或被移除,可能包含破坏性变更,可能不稳定或尚未完全可用,并且某些部分可能仍在开发中或使用模拟数据。
启用未来标志
要启用未来标志:
- (可选)如果服务器正在运行,使用
Ctrl-C停止它。 - 打开
config/features.js|ts文件,如果文件尚不存在则创建它。该文件将导出一个包含所有要启用的未来标志的future对象。 - 要启用未来标志,将其属性名(参见完整列表)添加到
future对象,并确保该属性的值设为true。以下示例展示了如何启用experimental_firstPublishedAt未来标志:
JavaScript
module.exports = ({ env }) => ({
future: {
experimental_firstPublishedAt: env.bool('STRAPI_FUTURE_EXPERIMENTAL_FIRST_PUBLISHED_AT', false),
},
})
此示例假定你的应用根目录有一个 .env 环境文件,且该文件包含以下行:
STRAPI_FUTURE_EXPERIMENTAL_FIRST_PUBLISHED_AT=true
如果你的环境文件不包含此值,experimental_firstPublishedAt 未来标志属性值将默认为 false,实验性功能将不会被启用。
TypeScript
export default ({ env }) => ({
future: {
experimental_firstPublishedAt: env.bool('STRAPI_FUTURE_EXPERIMENTAL_FIRST_PUBLISHED_AT', false),
},
});
此示例假定你的应用根目录有一个 .env 环境文件,且该文件包含以下行:
STRAPI_FUTURE_EXPERIMENTAL_FIRST_PUBLISHED_AT=true
如果你的环境文件不包含此值,experimental_firstPublishedAt 未来标志属性值将默认为 false,实验性功能将不会被启用。
- 重新构建管理面板并重启服务器:
Yarn
```sh
yarn develop
```
NPM
```sh
npm run develop
```
未来标志 API
开发者可以使用以下 API 与未来标志交互:
-
功能配置是
config对象的一部分,可以使用strapi.config.get('features')或strapi.features.config读取。 -
strapi.features.future返回isEnabled(),可用于判断某个未来标志是否启用,使用以下方法:strapi.features.future.isEnabled('featureName')。 -
strapi.features.isEnabled('flagName')对稳定标志作用相同。
可用的未来标志
| Property name | Related feature | Suggested environment variable name | Maturity |
|---|---|---|---|
experimental_firstPublishedAt | 草稿与发布 | STRAPI_FUTURE_EXPERIMENTAL_FIRST_PUBLISHED_AT | 功能可用,但其设计仍在根据实际使用情况进行验证。 |
可用的稳定标志
稳定标志是声明在 config/features.js|ts 顶层的永久配置选项,位于 future 对象之外。与未来标志不同,它们不承诺会被移除,也没有 (功能开关) 徽章:它们用于切换受支持的功能,而不是选择加入预览。
| Property name | Related feature | Suggested environment variable name | Description |
|---|---|---|---|
useLegacyMediaLibrary | 媒体库 | USE_LEGACY_MEDIA_LIBRARY | 恢复先前的媒体库界面。默认为 false,因此你会得到重新设计的界面。 |
JavaScript
module.exports = ({ env }) => ({
useLegacyMediaLibrary: env.bool('USE_LEGACY_MEDIA_LIBRARY', false),
});
TypeScript
export default ({ env }) => ({
useLegacyMediaLibrary: env.bool('USE_LEGACY_MEDIA_LIBRARY', false),
});