Created
April 10, 2018 17:19
-
-
Save romshark/0bde5bc343eec0f9c3592073e34128b5 to your computer and use it in GitHub Desktop.
WebPack config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports = { | |
extractCSS: process.env.NODE_ENV === 'production', | |
preserveWhitespace: false | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const path = require('path') | |
const webpack = require('webpack') | |
const vueConfig = require('./vue-loader.config') | |
const ExtractTextPlugin = require('extract-text-webpack-plugin') | |
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') | |
//const UglifyJsPlugin = require('uglifyjs-webpack-plugin') | |
const isProd = process.env.NODE_ENV === 'production' | |
module.exports = { | |
devtool: isProd | |
? false | |
: '#cheap-module-source-map', | |
output: { | |
path: path.resolve(__dirname, '../dist'), | |
publicPath: '/dist/', | |
filename: '[name].[chunkhash].js' | |
}, | |
resolve: { | |
alias: { | |
'public': path.resolve(__dirname, '../public') | |
} | |
}, | |
module: { | |
noParse: /es6-promise\.js$/, // avoid webpack shimming process | |
rules: [ | |
{ | |
test: /\.vue$/, | |
loader: 'vue-loader', | |
options: vueConfig, | |
}, | |
{ | |
test: /\.js$/, | |
loader: 'babel-loader', | |
exclude: /node_modules/ | |
}, | |
{ | |
test: /\.svg$/, | |
loader: 'svg-inline-loader' | |
}, | |
{ | |
test: /\.(png|jpg|gif)$/, | |
loader: 'url-loader', | |
options: { | |
limit: 10000, | |
name: '[name].[ext]?[hash]' | |
} | |
}, | |
{ | |
test: /\.css$/, | |
use: isProd | |
? ExtractTextPlugin.extract({ | |
use: 'css-loader?minimize', | |
fallback: 'vue-style-loader' | |
}) | |
: ['vue-style-loader', 'css-loader'] | |
} | |
] | |
}, | |
performance: { | |
maxEntrypointSize: 300000, | |
hints: isProd ? 'warning' : false | |
}, | |
plugins: isProd | |
? [ | |
//new UglifyJsPlugin(), | |
new webpack.NamedModulesPlugin(), | |
new webpack.optimize.ModuleConcatenationPlugin(), | |
new ExtractTextPlugin({ | |
filename: 'common.[chunkhash].css' | |
}) | |
] : [ | |
new webpack.NamedModulesPlugin(), | |
new FriendlyErrorsPlugin() | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const webpack = require('webpack') | |
const merge = require('webpack-merge') | |
const base = require('./webpack.base.config') | |
const SWPrecachePlugin = require('sw-precache-webpack-plugin') | |
const VueSSRClientPlugin = require('vue-server-renderer/client-plugin') | |
const config = merge(base, { | |
entry: { | |
app: './src/entry-client.js' | |
}, | |
resolve: { | |
alias: { | |
} | |
}, | |
plugins: [ | |
// strip dev-only code in Vue source | |
new webpack.DefinePlugin({ | |
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'), | |
'process.env.VUE_ENV': '"client"' | |
}), | |
// extract vendor chunks for better caching | |
new webpack.optimize.CommonsChunkPlugin({ | |
name: 'vendor', | |
minChunks: function (module) { | |
// a module is extracted into the vendor chunk if... | |
return ( | |
// it's inside node_modules | |
/node_modules/.test(module.context) && | |
// and not a CSS file (due to extract-text-webpack-plugin limitation) | |
!/\.css$/.test(module.request) | |
) | |
} | |
}), | |
// extract webpack runtime & manifest to avoid vendor chunk hash changing | |
// on every build. | |
new webpack.optimize.CommonsChunkPlugin({ | |
name: 'manifest' | |
}), | |
new VueSSRClientPlugin() | |
] | |
}) | |
if (process.env.NODE_ENV === 'production') { | |
config.plugins.push( | |
// auto generate service worker | |
) | |
} | |
module.exports = config |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const webpack = require('webpack') | |
const merge = require('webpack-merge') | |
const base = require('./webpack.base.config') | |
const nodeExternals = require('webpack-node-externals') | |
const VueSSRServerPlugin = require('vue-server-renderer/server-plugin') | |
module.exports = merge(base, { | |
target: 'node', | |
devtool: '#source-map', | |
entry: './src/entry-server.js', | |
output: { | |
filename: 'server-bundle.js', | |
libraryTarget: 'commonjs2' | |
}, | |
resolve: { | |
alias: { | |
} | |
}, | |
// https://webpack.js.org/configuration/externals/#externals | |
// https://github.com/liady/webpack-node-externals | |
externals: nodeExternals({ | |
// do not externalize CSS files in case we need to import it from a dep | |
whitelist: /\.css$/ | |
}), | |
plugins: [ | |
new webpack.DefinePlugin({ | |
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'), | |
'process.env.VUE_ENV': '"server"' | |
}), | |
new VueSSRServerPlugin() | |
] | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment