forked from vuejs-templates/webpack
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
200 additions
and
4 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
require('./check-versions')() | ||
|
||
process.env.NODE_ENV = 'preproduction' | ||
|
||
var ora = require('ora') | ||
var rm = require('rimraf') | ||
var path = require('path') | ||
var chalk = require('chalk') | ||
var webpack = require('webpack') | ||
var config = require('../config') | ||
var webpackConfig = require('./webpack.preprod.conf') | ||
|
||
var spinner = ora('building for preproduction...') | ||
spinner.start() | ||
|
||
rm(path.join(config.build_preprod.assetsRoot, config.build_preprod.assetsSubDirectory), err => { | ||
if (err) throw err | ||
webpack(webpackConfig, function (err, stats) { | ||
spinner.stop() | ||
if (err) throw err | ||
process.stdout.write(stats.toString({ | ||
colors: true, | ||
modules: false, | ||
children: false, | ||
chunks: false, | ||
chunkModules: false | ||
}) + '\n\n') | ||
|
||
console.log(chalk.cyan(' Build complete.\n')) | ||
console.log(chalk.yellow( | ||
' Tip: built files are meant to be served over an HTTP server.\n' + | ||
' Opening index.html over file:// won\'t work.\n' | ||
)) | ||
}) | ||
}) |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
var path = require('path') | ||
var utils = require('./utils') | ||
var webpack = require('webpack') | ||
var config = require('../config') | ||
var merge = require('webpack-merge') | ||
var baseWebpackConfig = require('./webpack.base.conf') | ||
var CopyWebpackPlugin = require('copy-webpack-plugin') | ||
var HtmlWebpackPlugin = require('html-webpack-plugin') | ||
var ExtractTextPlugin = require('extract-text-webpack-plugin') | ||
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') | ||
|
||
var env = config.build_preprod.env | ||
|
||
var webpackConfig = merge(baseWebpackConfig, { | ||
module: { | ||
rules: utils.styleLoaders({ | ||
sourceMap: config.build_preprod.productionSourceMap, | ||
extract: true | ||
}) | ||
}, | ||
devtool: config.build_preprod.productionSourceMap ? '#source-map' : false, | ||
output: { | ||
path: config.build_preprod.assetsRoot, | ||
filename: utils.assetsPath('js/[name].[chunkhash].js'), | ||
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') | ||
}, | ||
plugins: [ | ||
// http://vuejs.github.io/vue-loader/en/workflow/production.html | ||
new webpack.DefinePlugin({ | ||
'process.env': env | ||
}), | ||
new webpack.optimize.UglifyJsPlugin({ | ||
compress: { | ||
warnings: false | ||
}, | ||
sourceMap: true | ||
}), | ||
// extract css into its own file | ||
new ExtractTextPlugin({ | ||
filename: utils.assetsPath('css/[name].[contenthash].css') | ||
}), | ||
// Compress extracted CSS. We are using this plugin so that possible | ||
// duplicated CSS from different components can be deduped. | ||
new OptimizeCSSPlugin(), | ||
// generate dist index.html with correct asset hash for caching. | ||
// you can customize output by editing /index.html | ||
// see https://github.com/ampedandwired/html-webpack-plugin | ||
new HtmlWebpackPlugin({ | ||
filename: config.build_preprod.index, | ||
template: 'index.html', | ||
inject: true, | ||
minify: { | ||
removeComments: true, | ||
collapseWhitespace: true, | ||
removeAttributeQuotes: true | ||
// more options: | ||
// https://github.com/kangax/html-minifier#options-quick-reference | ||
}, | ||
// necessary to consistently work with multiple chunks via CommonsChunkPlugin | ||
chunksSortMode: 'dependency' | ||
}), | ||
// split vendor js into its own file | ||
new webpack.optimize.CommonsChunkPlugin({ | ||
name: 'vendor', | ||
minChunks: function (module, count) { | ||
// any required modules inside node_modules are extracted to vendor | ||
return ( | ||
module.resource && | ||
/\.js$/.test(module.resource) && | ||
module.resource.indexOf( | ||
path.join(__dirname, '../node_modules') | ||
) === 0 | ||
) | ||
} | ||
}), | ||
// extract webpack runtime and module manifest to its own file in order to | ||
// prevent vendor hash from being updated whenever app bundle is updated | ||
new webpack.optimize.CommonsChunkPlugin({ | ||
name: 'manifest', | ||
chunks: ['vendor'] | ||
}), | ||
// copy custom static assets | ||
new CopyWebpackPlugin([ | ||
{ | ||
from: path.resolve(__dirname, '../static'), | ||
to: config.build_preprod.assetsSubDirectory, | ||
ignore: ['.*'] | ||
} | ||
]) | ||
] | ||
}) | ||
|
||
if (config.build_preprod.productionGzip) { | ||
var CompressionWebpackPlugin = require('compression-webpack-plugin') | ||
|
||
webpackConfig.plugins.push( | ||
new CompressionWebpackPlugin({ | ||
asset: '[path].gz[query]', | ||
algorithm: 'gzip', | ||
test: new RegExp( | ||
'\\.(' + | ||
config.build_preprod.productionGzipExtensions.join('|') + | ||
')$' | ||
), | ||
threshold: 10240, | ||
minRatio: 0.8 | ||
}) | ||
) | ||
} | ||
|
||
if (config.build_preprod.bundleAnalyzerReport) { | ||
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin | ||
webpackConfig.plugins.push(new BundleAnalyzerPlugin()) | ||
} | ||
|
||
module.exports = webpackConfig |
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
var merge = require('webpack-merge') | ||
var prodEnv = require('./prod.env') | ||
|
||
module.exports = merge(prodEnv, { | ||
NODE_ENV: '"preproduction"' | ||
}) |
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
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