|
|
let webpack = require('webpack');
|
|
|
let utils = require('./utils');
|
|
|
let _ = require('lodash');
|
|
|
const os = require('os');
|
|
|
var path = require('path');
|
|
|
let config = require('./config')
|
|
|
let vueLoaderConfig = require('./vue-loader.conf')
|
|
|
const HappyPack = require('happypack');
|
|
|
let vueLoaderConfig = require('./vue-loader.conf');
|
|
|
const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin');
|
|
|
let bundleConfig = require('./dll/bundle-config.json');
|
|
|
|
|
|
const happyThreadPool = HappyPack.ThreadPool({ // eslint-disable-line
|
|
|
size: os.cpus().length
|
|
|
});
|
|
|
|
|
|
function resolve (dir) {
|
|
|
return path.join(__dirname, '..', dir)
|
|
|
return path.join(__dirname, '../app', dir)
|
|
|
}
|
|
|
|
|
|
let assets = _.map(bundleConfig.vendor, (asset, name) => {
|
|
|
return {
|
|
|
filepath: require.resolve(`./dll/${asset}`),
|
|
|
outputPath: utils.assetsPath(name),
|
|
|
typeOfAsset: name,
|
|
|
publicPath: (process.env.NODE_ENV === 'production'
|
|
|
? config.build.assetsPublicPath
|
|
|
: config.dev.assetsPublicPath) + utils.assetsPath(name)
|
|
|
}
|
|
|
})
|
|
|
module.exports = {
|
|
|
entry: {
|
|
|
app: './app.js'
|
|
|
app: './app/app.js'
|
|
|
},
|
|
|
output: {
|
|
|
path: config.build.assetsRoot,
|
|
|
filename: 'js/[name].js',
|
|
|
chunkFilename: 'js/[name].js',
|
|
|
filename: utils.assetsPath('js/[name].js'),
|
|
|
chunkFilename: utils.assetsPath('js/[name].js'),
|
|
|
publicPath: process.env.NODE_ENV === 'production'
|
|
|
? config.build.assetsPublicPath
|
|
|
: config.dev.assetsPublicPath
|
...
|
...
|
@@ -37,7 +56,7 @@ module.exports = { |
|
|
rules: [
|
|
|
{
|
|
|
test: /\.js$/,
|
|
|
loader: 'babel-loader',
|
|
|
loader: 'happypack/loader?id=js',
|
|
|
exclude: /node_modules/
|
|
|
},
|
|
|
{
|
...
|
...
|
@@ -62,5 +81,22 @@ module.exports = { |
|
|
options: vueLoaderConfig
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
},
|
|
|
plugins: [
|
|
|
new HappyPack({
|
|
|
id: 'js',
|
|
|
threadPool: happyThreadPool,
|
|
|
loaders: ['babel-loader?cacheDirectory=true'],
|
|
|
}),
|
|
|
new HappyPack({
|
|
|
id: 'vue',
|
|
|
threadPool: happyThreadPool,
|
|
|
loaders: ['vue-loader'],
|
|
|
}),
|
|
|
new AddAssetHtmlPlugin(assets),
|
|
|
new webpack.DllReferencePlugin({
|
|
|
context: __dirname,
|
|
|
manifest: require('./dll/manifest.json'),
|
|
|
})
|
|
|
]
|
|
|
}; |
...
|
...
|
|