/** * 公共配置 */ const path = require('path'); const webpack = require('webpack'); const pkg = require('../package.json'); const VueLoaderPlugin = require('vue-loader/lib/plugin') function resolve (dir) { return path.join(__dirname, '..', dir); } module.exports = { // 加载器 module: { // https://doc.webpack-china.org/guides/migrating/#module-loaders-module-rules rules: [ { // https://vue-loader.vuejs.org/en/configurations/extract-css.html test: /\.vue$/, loader: 'vue-loader', options: { loaders: { css: [ 'vue-style-loader', { loader: 'css-loader', options: { sourceMap: true, }, }, ], less: [ 'vue-style-loader', { loader: 'css-loader', options: { sourceMap: true, }, }, { loader: 'less-loader', options: { sourceMap: true, }, }, ], }, postLoaders: { html: 'babel-loader?sourceMap' }, sourceMap: true, } }, { test: /\.js$/, loader: 'babel-loader', options: { sourceMap: true, }, exclude: /node_modules/, }, { test: /\.ts$/, loader: 'ts-loader', options: { appendTsSuffixTo: [/\.vue$/]}, exclude: /node_modules/ }, { test: /\.css$/, use: [ 'vue-style-loader', 'css-loader' ] }, { test: /\.less$/, use: [ 'vue-style-loader', 'css-loader', 'less-loader' ] }, { test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=8192' }, { test: /\.(html|tpl)$/, loader: 'html-loader' } ] }, resolve: { extensions: ['.js', '.vue', '.ts'], alias: { 'vue': 'vue/dist/vue.esm.js', '@': resolve('src') } }, plugins: [ new VueLoaderPlugin(), new webpack.optimize.ModuleConcatenationPlugin(), new webpack.DefinePlugin({ 'process.env.VERSION': `'${pkg.version}'` }), ] };