UNPKG

3.37 kBJavaScriptView Raw
1const path = require('path');
2const cwd = process.cwd();
3const ExtractTextPlugin = require('extract-text-webpack-plugin')
4
5const resolve = (dir) => {
6 return path.posix.join(cwd, dir)
7}
8
9const getAssetsPath = (_path, config) => {
10 var assetsSubDirectory = config.assetsSubDirectory
11 return path.posix.join(cwd, assetsSubDirectory, _path)
12}
13
14const getCssLoaders = (env, inVue) => {
15 let styleLoader = inVue ? 'vue-style-loader' : 'style-loader'
16
17 if (env === 'production') {
18 return ExtractTextPlugin.extract({
19 fallback: styleLoader,
20 use: ['css-loader', 'sass-loader']
21 })
22 } else {
23 let loaders = [styleLoader, 'css-loader', 'sass-loader']
24 if (inVue) {
25 return loaders.join('!')
26 } else {
27 return loaders
28 }
29 }
30}
31
32module.exports = function (config) {
33 const env = JSON.parse(config.env.NODE_ENV)
34
35 return {
36 entry: {
37 app: resolve('src/main.js'),
38 },
39 output: {
40 path: resolve('dist'),
41 filename: '[name].js',
42 publicPath: config.assetsPublicPath
43 },
44 resolve: {
45 extensions: ['.js', '.vue', '.json'],
46 alias: {
47 'vue$': 'vue/dist/vue.common.js',
48 '@': resolve('src'),
49 'http$': resolve('lib/services.js'),
50 'core$': resolve('core/index.js'),
51 'config$': resolve('config.js'),
52 'views': resolve('src/views'),
53 'portal': resolve('src/views/portal'),
54 'service': resolve('src/service')
55 }
56 },
57 module: {
58 rules: [{
59 test: /\.(vue)$/,
60 enforce: 'pre',
61 loader: 'eslint-loader',
62 include: [resolve('src')],
63 options: {
64 formatter: require("eslint-friendly-formatter")
65 }
66 },
67 {
68 test: /\.vue$/,
69 loader: 'vue-loader',
70 options: {
71 loaders: {
72 scss: getCssLoaders(env, true)
73 }
74 }
75 },
76 {
77 test: /\.(css|scss)$/,
78 use: getCssLoaders(env)
79 },
80 {
81 test: /\.js(x)*$/,
82 loader: 'babel-loader',
83 exclude: /node_modules/
84 },
85 {
86 test: /\.html$/,
87 loader: 'vue-html-loader'
88 },
89 {
90 test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
91 loader: 'url-loader',
92 query: {
93 limit: 10000,
94 name: getAssetsPath('img/[name].[hash:7].[ext]', config)
95 }
96 },
97 {
98 test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
99 loader: 'url-loader',
100 query: {
101 limit: 10000,
102 name: getAssetsPath('fonts/[name].[hash:7].[ext]', config)
103 }
104 }
105 ]
106 }
107 }
108}
\No newline at end of file