|
1 | 1 | var path = require('path')
|
2 |
| -var config = require('../config') |
3 | 2 | var utils = require('./utils')
|
4 |
| -var projectRoot = path.resolve(__dirname, '../') |
| 3 | +var config = require('../config') |
| 4 | +var vueLoaderConfig = require('./vue-loader.conf') |
5 | 5 |
|
6 |
| -var env = process.env.NODE_ENV |
7 |
| -// check env & config/index.js to decide whether to enable CSS source maps for the |
8 |
| -// various preprocessor loaders added to vue-loader at the end of this file |
9 |
| -var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap) |
10 |
| -var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap) |
11 |
| -var useCssSourceMap = cssSourceMapDev || cssSourceMapProd |
| 6 | +function resolve (dir) { |
| 7 | + return path.join(__dirname, '..', dir) |
| 8 | +} |
12 | 9 |
|
13 | 10 | module.exports = {
|
14 | 11 | entry: {
|
15 | 12 | app: './src/main.js'
|
16 | 13 | },
|
17 | 14 | output: {
|
18 | 15 | path: config.build.assetsRoot,
|
19 |
| - publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, |
20 |
| - filename: '[name].js' |
| 16 | + filename: '[name].js', |
| 17 | + publicPath: process.env.NODE_ENV === 'production' |
| 18 | + ? config.build.assetsPublicPath |
| 19 | + : config.dev.assetsPublicPath |
21 | 20 | },
|
22 | 21 | resolve: {
|
23 |
| - extensions: ['', '.js', '.vue', '.json'], |
24 |
| - fallback: [path.join(__dirname, '../node_modules')], |
| 22 | + extensions: ['.js', '.vue', '.json'], |
| 23 | + modules: [ |
| 24 | + resolve('src'), |
| 25 | + resolve('node_modules') |
| 26 | + ], |
25 | 27 | alias: {
|
26 | 28 | 'vue$': 'vue/dist/vue.common.js',
|
27 |
| - 'src': path.resolve(__dirname, '../src'), |
28 |
| - 'assets': path.resolve(__dirname, '../src/assets'), |
29 |
| - 'components': path.resolve(__dirname, '../src/components') |
| 29 | + 'src': resolve('src'), |
| 30 | + 'assets': resolve('src/assets'), |
| 31 | + 'components': resolve('src/components') |
30 | 32 | }
|
31 | 33 | },
|
32 |
| - resolveLoader: { |
33 |
| - fallback: [path.join(__dirname, '../node_modules')] |
34 |
| - }, |
35 | 34 | module: {
|
36 |
| - loaders: [ |
| 35 | + rules: [ |
37 | 36 | {
|
38 | 37 | test: /\.vue$/,
|
39 |
| - loader: 'vue' |
| 38 | + loader: 'vue-loader', |
| 39 | + options: vueLoaderConfig |
40 | 40 | },
|
41 | 41 | {
|
42 | 42 | test: /\.js$/,
|
43 |
| - loader: 'babel', |
44 |
| - include: [ |
45 |
| - path.join(projectRoot, 'src') |
46 |
| - ], |
47 |
| - exclude: /node_modules/ |
48 |
| - }, |
49 |
| - { |
50 |
| - test: /\.json$/, |
51 |
| - loader: 'json' |
| 43 | + loader: 'babel-loader', |
| 44 | + include: [resolve('src'), resolve('test')] |
52 | 45 | },
|
53 | 46 | {
|
54 | 47 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
|
55 |
| - loader: 'url', |
| 48 | + loader: 'url-loader', |
56 | 49 | query: {
|
57 | 50 | limit: 10000,
|
58 | 51 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
|
59 | 52 | }
|
60 | 53 | },
|
61 | 54 | {
|
62 | 55 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
|
63 |
| - loader: 'url', |
| 56 | + loader: 'url-loader', |
64 | 57 | query: {
|
65 | 58 | limit: 10000,
|
66 | 59 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
|
67 | 60 | }
|
68 | 61 | }
|
69 | 62 | ]
|
70 |
| - }, |
71 |
| - vue: { |
72 |
| - loaders: utils.cssLoaders({sourceMap: useCssSourceMap}), |
73 |
| - postcss: [ |
74 |
| - require('postcss-import')(), |
75 |
| - require('postcss-cssnext')()//, |
76 |
| - // require('autoprefixer')({browsers: ['last 7 versions']}) //postcss-cssnext插件中已包含autoprefixer |
77 |
| - ], |
78 |
| - autoprefixer: true |
79 | 63 | }
|
80 | 64 | }
|
0 commit comments