-
Notifications
You must be signed in to change notification settings - Fork 1
/
utils.js
73 lines (63 loc) · 2.08 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
'use strict'
const path = require('path')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const config = require('./config')
const _ = module.exports = {}
_.cwd = (file) => {
return path.join(process.cwd(), file || '')
}
_.cssLoader = config.cssModules ?
'css-loader?-autoprefixer&modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]' :
'css-loader?-autoprefixer'
_.cssProcessors = [
{loader: '', test: /\.css$/},
{loader: 'sass-loader?sourceMap', test: /\.scss$/},
{loader: 'less-loader?sourceMap', test: /\.less$/},
{loader: 'stylus-loader?sourceMap', test: /\.styl$/},
{loader: 'sass-loader?indentedSyntax&sourceMap', test: /\.sass$/},
]
_.outputPath = config.electron ?
path.join(__dirname, '../app/dist') :
path.join(__dirname, '../dist')
_.outputIndexPath = config.electron ?
path.join(__dirname, '../app/dist/index.html') :
path.join(__dirname, '../dist/index.html')
_.target = config.electron ?
'electron-renderer' :
'web'
// https://github.com/egoist/vbuild/blob/master/lib/vue-loaders.js
_.loadersOptions = () => {
const isProd = process.env.NODE_ENV === 'production'
function generateLoader(langs) {
langs.unshift('css-loader?sourceMap&-autoprefixer')
if (!isProd) {
return ['vue-style-loader'].concat(langs).join('!')
}
return ExtractTextPlugin.extract({
fallback: 'vue-style-loader',
use: langs.join('!')
})
}
return {
minimize: isProd,
options: {
// css-loader relies on context
context: process.cwd(),
// postcss plugins apply to .css files
postcss: config.postcss,
babel: config.babel,
vue: {
// postcss plugins apply to css in .vue files
postcss: config.postcss,
loaders: {
css: generateLoader([]),
sass: generateLoader(['sass-loader?indentedSyntax&sourceMap']),
scss: generateLoader(['sass-loader?sourceMap']),
less: generateLoader(['less-loader?sourceMap']),
stylus: generateLoader(['stylus-loader?sourceMap']),
js: 'babel-loader'
}
}
}
}
}