Make it possible to enable caretColor and content core plugins in AOT mode (#4548)

* Fix issue where disabled corePlugins can't be re-enabled

* Disable caretColor and content core plugins by default, enable in JIT

* Don't disable caretColor/content in default config stub, hard-code for AOT instead

But with ability to still opt-in through your own config. Somewhat messy, but goal is to keep the messes in the AOT path and keep the JIT path pure.

* Fix style

* Revert unnecessary changes

* Fix style
This commit is contained in:
Adam Wathan 2021-06-03 09:27:22 -04:00 committed by GitHub
parent d6b11b3807
commit 65fde59f6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 9 deletions

View File

@ -1,11 +1,7 @@
import * as plugins from './plugins/index.js'
import configurePlugins from './util/configurePlugins'
const jitOnlyPlugins = ['caretColor', 'content']
export default function ({ corePlugins: corePluginConfig }) {
corePluginConfig = corePluginConfig.filter((pluginName) => !jitOnlyPlugins.includes(pluginName))
return configurePlugins(corePluginConfig, Object.keys(plugins)).map((pluginName) => {
return plugins[pluginName]()
})

View File

@ -50,7 +50,10 @@ function resolveConfigPath(filePath) {
const getConfigFunction = (config) => () => {
if (_.isUndefined(config)) {
return resolveConfig([...getAllConfigs(defaultConfig)])
return resolveConfig([
...getAllConfigs(defaultConfig),
{ corePlugins: { caretColor: false, content: false } },
])
}
// Skip this if Jest is running: https://github.com/facebook/jest/pull/9841#issuecomment-621417584
@ -64,7 +67,10 @@ const getConfigFunction = (config) => () => {
const configObject = _.isObject(config) ? _.get(config, 'config', config) : require(config)
return resolveConfig([...getAllConfigs(configObject)])
return resolveConfig([
...getAllConfigs(configObject),
{ corePlugins: { caretColor: false, content: false } },
])
}
let warned = false

View File

@ -5,9 +5,19 @@ export default function (pluginConfig, plugins) {
const pluginNames = Array.isArray(pluginConfig)
? pluginConfig
: plugins.filter((pluginName) => {
return pluginConfig !== false && pluginConfig[pluginName] !== false
})
: [
...new Set(
plugins
.filter((pluginName) => {
return pluginConfig !== false && pluginConfig[pluginName] !== false
})
.concat(
Object.keys(pluginConfig).filter((pluginName) => {
return pluginConfig[pluginName] !== false
})
)
),
]
return pluginNames
}

View File

@ -2137,6 +2137,25 @@ test('core plugin configuration builds on the default list when starting with an
})
})
test('core plugins that are disabled by default can be enabled', () => {
const userConfig = {
corePlugins: { display: true },
}
const defaultConfig = {
presets: [],
prefix: '',
important: false,
separator: ':',
theme: {},
variants: {},
corePlugins: { display: false },
}
const result = resolveConfig([userConfig, defaultConfig])
expect(result.corePlugins).toContain('display')
})
test('core plugin configurations stack', () => {
const userConfig = {
corePlugins: { display: false },