mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-05-04 11:00:39 -05:00
feat(css modules): Add CSS Module localIdentName option to vue config (#915)
Changed the vue config to take a user input option for CSS module localIdentName and default back to initial localIdentName ([name]_[local]__[hash:base64:5])
This commit is contained in:
committed by
Evan You
parent
bbc931c285
commit
31cdc8636f
@@ -140,6 +140,21 @@ test('css.sourceMap', () => {
|
||||
})
|
||||
})
|
||||
|
||||
test('css.localIdentName', () => {
|
||||
const localIdentName = '[name]__[local]--[hash:base64:5]'
|
||||
const config = genConfig({
|
||||
vue: {
|
||||
css: {
|
||||
modules: true,
|
||||
localIdentName: localIdentName
|
||||
}
|
||||
}
|
||||
})
|
||||
LANGS.forEach(lang => {
|
||||
expect(findOptions(config, lang, 'css').localIdentName).toBe(localIdentName)
|
||||
})
|
||||
})
|
||||
|
||||
test('css.loaderOptions', () => {
|
||||
const data = '$env: production;'
|
||||
const config = genConfig({
|
||||
|
||||
@@ -19,7 +19,8 @@ module.exports = (api, options) => {
|
||||
extract: true,
|
||||
modules: false,
|
||||
sourceMap: false,
|
||||
loaderOptions: {}
|
||||
loaderOptions: {},
|
||||
localIdentName: '[name]_[local]__[hash:base64:5]'
|
||||
}
|
||||
const userOptions = Object.assign(defaultOptions, options.css || {})
|
||||
const extract = isProd && userOptions.extract !== false
|
||||
@@ -52,7 +53,7 @@ module.exports = (api, options) => {
|
||||
options.loaders = Object.assign(resolver.vue(), options.loaders)
|
||||
options.cssSourceMap = !!userOptions.cssSourceMap
|
||||
options.cssModules = Object.assign({
|
||||
localIdentName: '[name]_[local]__[hash:base64:5]'
|
||||
localIdentName: baseOptions.localIdentName
|
||||
}, options.cssModules)
|
||||
return options
|
||||
})
|
||||
|
||||
@@ -17,6 +17,7 @@ const schema = createSchema(joi => joi.object({
|
||||
css: joi.object({
|
||||
modules: joi.boolean(),
|
||||
extract: joi.boolean(),
|
||||
localIdentName: joi.string(),
|
||||
sourceMap: joi.boolean(),
|
||||
loaderOptions: joi.object({
|
||||
sass: joi.object(),
|
||||
@@ -77,6 +78,7 @@ exports.defaults = () => ({
|
||||
css: {
|
||||
// extract: true,
|
||||
// modules: false,
|
||||
// localIdentName: '[name]_[local]_[hash:base64:5]',
|
||||
// sourceMap: false,
|
||||
// loaderOptions: {}
|
||||
},
|
||||
|
||||
@@ -13,6 +13,7 @@ module.exports = class CSSLoaderResolver {
|
||||
* @param {Object} options
|
||||
* @param {boolean} [options.sourceMap=undefined] Enable sourcemaps.
|
||||
* @param {boolean} [options.modules=undefined] Enable CSS modules.
|
||||
* @param {string} [options.localIdentName='[name]_[local]__[hash:base64:5]'] Customizes CSS modules localIdentName.
|
||||
* @param {boolean} [options.extract=undefined] Extract CSS.
|
||||
* @param {boolean} [options.minimize=undefined] Minimize CSS.
|
||||
* @param {boolean} [options.postcss=undefined] Enable postcss-loader.
|
||||
@@ -21,6 +22,7 @@ module.exports = class CSSLoaderResolver {
|
||||
constructor ({
|
||||
sourceMap,
|
||||
modules,
|
||||
localIdentName,
|
||||
extract,
|
||||
minimize,
|
||||
postcss,
|
||||
@@ -32,6 +34,7 @@ module.exports = class CSSLoaderResolver {
|
||||
this.extract = extract && !process.env.VUE_CLI_CSS_SHADOW_MODE
|
||||
this.minimize = minimize
|
||||
this.modules = modules
|
||||
this.localIdentName = localIdentName
|
||||
this.postcss = postcss
|
||||
this.loaderOptions = loaderOptions || {}
|
||||
}
|
||||
@@ -45,7 +48,7 @@ module.exports = class CSSLoaderResolver {
|
||||
if (this.modules) {
|
||||
cssLoaderOptions.modules = true
|
||||
cssLoaderOptions.importLoaders = 1
|
||||
cssLoaderOptions.localIdentName = '[name]_[local]__[hash:base64:5]'
|
||||
cssLoaderOptions.localIdentName = this.localIdentName
|
||||
}
|
||||
|
||||
if (loader === 'css') {
|
||||
|
||||
Reference in New Issue
Block a user