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 |
|
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 |
|
36 |
|
37 | if (options.extract) {
|
38 | return ExtractTextPlugin.extract({
|
39 | use: loaders,
|
40 | publicPath: '../../',
|
41 | fallback: 'vue-style-loader'
|
42 | })
|
43 | } else {
|
44 | return ['vue-style-loader'].concat(loaders)
|
45 | }
|
46 | }
|
47 |
|
48 |
|
49 | return {
|
50 | css: generateLoaders(),
|
51 | postcss: generateLoaders(),
|
52 | less: generateLoaders('less'),
|
53 | sass: generateLoaders('sass', { indentedSyntax: true }),
|
54 | scss: generateLoaders('sass'),
|
55 | stylus: generateLoaders('stylus'),
|
56 | styl: generateLoaders('stylus')
|
57 | }
|
58 | }
|
59 |
|
60 |
|
61 | exports.styleLoaders = function (options) {
|
62 | var output = []
|
63 | var loaders = exports.cssLoaders(options)
|
64 | for (var extension in loaders) {
|
65 | var loader = loaders[extension]
|
66 | output.push({
|
67 | test: new RegExp('\\.' + extension + '$'),
|
68 | use: loader
|
69 | })
|
70 | }
|
71 | return output
|
72 | }
|