|
|
@@ -1,62 +1,33 @@
|
|
|
const ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
|
+process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
|
|
+const IS_DEV = process.env.NODE_ENV === 'development';
|
|
|
|
|
|
-exports.cssLoaders = function (options) {
|
|
|
- options = options || {}
|
|
|
-
|
|
|
- var cssLoader = {
|
|
|
+function styleLoader({ loaders = [], extract = !IS_DEV, minimize = !IS_DEV, fallback = 'style-loader' } = {}) {
|
|
|
+ const cssLoader = {
|
|
|
loader: 'css-loader',
|
|
|
options: {
|
|
|
- minimize: process.env.NODE_ENV === 'production',
|
|
|
- sourceMap: options.sourceMap
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // generate loader string to be used with extract text plugin
|
|
|
- function generateLoaders (loader, loaderOptions) {
|
|
|
- var loaders = [cssLoader]
|
|
|
- if (loader) {
|
|
|
- loaders.push({
|
|
|
- loader: loader + '-loader',
|
|
|
- options: Object.assign({}, loaderOptions, {
|
|
|
- sourceMap: options.sourceMap
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- // Extract CSS when that option is specified
|
|
|
- // (which is the case during production build)
|
|
|
- if (options.extract) {
|
|
|
- return ExtractTextPlugin.extract({
|
|
|
- use: loaders,
|
|
|
- fallback: 'vue-style-loader'
|
|
|
- })
|
|
|
- } else {
|
|
|
- return ['vue-style-loader'].concat(loaders)
|
|
|
- }
|
|
|
- }
|
|
|
+ minimize,
|
|
|
+ importLoaders: 1,
|
|
|
+ sourceMap: false,
|
|
|
+ },
|
|
|
+ };
|
|
|
+ return extract ? ExtractTextPlugin.extract({
|
|
|
+ fallback,
|
|
|
+ use: [cssLoader, ...loaders],
|
|
|
+ }) : [
|
|
|
+ fallback,
|
|
|
+ cssLoader,
|
|
|
+ ...loaders,
|
|
|
+ ];
|
|
|
+}
|
|
|
|
|
|
- // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html
|
|
|
+function styleRule(options = {}) {
|
|
|
return {
|
|
|
- css: generateLoaders(),
|
|
|
- postcss: generateLoaders(),
|
|
|
- less: generateLoaders('less'),
|
|
|
- sass: generateLoaders('sass', { indentedSyntax: true }),
|
|
|
- scss: generateLoaders('sass'),
|
|
|
- stylus: generateLoaders('stylus'),
|
|
|
- styl: generateLoaders('stylus')
|
|
|
- }
|
|
|
+ test: /\.css$/,
|
|
|
+ use: styleLoader(options),
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
-// Generate loaders for standalone style files (outside of .vue)
|
|
|
-exports.styleLoaders = function (options) {
|
|
|
- var output = []
|
|
|
- var loaders = exports.cssLoaders(options)
|
|
|
- for (var extension in loaders) {
|
|
|
- var loader = loaders[extension]
|
|
|
- output.push({
|
|
|
- test: new RegExp('\\.' + extension + '$'),
|
|
|
- use: loader
|
|
|
- })
|
|
|
- }
|
|
|
- return output
|
|
|
-}
|
|
|
+exports.IS_DEV = IS_DEV;
|
|
|
+exports.styleLoader = styleLoader;
|
|
|
+exports.styleRule = styleRule;
|