github.com/titpetric/pendulum@v0.1.180207-1512.0.20180514135826-1f399445df57/front/src/build/utils.js (about) 1 var path = require('path') 2 var config = require('../config') 3 var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 5 exports.assetsPath = function (_path) { 6 var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 ? config.build.assetsSubDirectory 8 : config.dev.assetsSubDirectory 9 return path.posix.join(assetsSubDirectory, _path) 10 } 11 12 exports.cssLoaders = function (options) { 13 options = options || {} 14 15 var cssLoader = { 16 loader: 'css-loader', 17 options: { 18 minimize: process.env.NODE_ENV === 'production', 19 sourceMap: options.sourceMap 20 } 21 } 22 23 // generate loader string to be used with extract text plugin 24 function generateLoaders (loader, loaderOptions) { 25 var loaders = [cssLoader] 26 if (loader) { 27 loaders.push({ 28 loader: loader + '-loader', 29 options: Object.assign({}, loaderOptions, { 30 sourceMap: options.sourceMap 31 }) 32 }) 33 } 34 35 // Extract CSS when that option is specified 36 // (which is the case during production build) 37 if (options.extract) { 38 return ExtractTextPlugin.extract({ 39 use: loaders, 40 fallback: 'vue-style-loader' 41 }) 42 } else { 43 return ['vue-style-loader'].concat(loaders) 44 } 45 } 46 47 // https://vue-loader.vuejs.org/en/configurations/extract-css.html 48 return { 49 css: generateLoaders(), 50 postcss: generateLoaders(), 51 less: generateLoaders('less'), 52 sass: generateLoaders('sass', { indentedSyntax: true }), 53 scss: generateLoaders('sass'), 54 stylus: generateLoaders('stylus'), 55 styl: generateLoaders('stylus') 56 } 57 } 58 59 // Generate loaders for standalone style files (outside of .vue) 60 exports.styleLoaders = function (options) { 61 var output = [] 62 var loaders = exports.cssLoaders(options) 63 for (var extension in loaders) { 64 var loader = loaders[extension] 65 output.push({ 66 test: new RegExp('\\.' + extension + '$'), 67 use: loader 68 }) 69 } 70 return output 71 }