部署到Heroku后触发Webpack构建的最佳方法是什么?
将已捆绑的版本推送到最美丽的解决方案中。
答案 0 :(得分:5)
这是什么类型的应用程序?如果您使用的是package.json,则可以使用npm脚本在postinstall步骤中运行webpack。
答案 1 :(得分:2)
我已经通过将devDependencies放在普通依赖项中解决了这个问题,并且我将postinstall脚本更改为:
node_modules/.bin/webpack
答案 2 :(得分:2)
您可以将package.json中的postinstall
设置为以下NODE_ENV=production webpack -p
然后将start
设为node
但您需要确保通过在webpack.config.js或webpack.config.js(生产)中将其设置为生产配置来配置您的webpack以进行生产。
我在webpack.config.js中设置了所有内容,如下所示..
const path = require('path');
const webpack = require('webpack');
const debug = process.env.NODE_ENV !== "production";
module.exports = {
entry: [
'./src/index.js'
],
output: {
path: path.resolve(__dirname, 'src'),
filename: 'bundle.js'
},
devtool: debug ? "inline-sourcemap" : null,
module: {
loader: [{
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['angular']
}
},
{
test: /\.css$/,
loader: "style-loader!css-loader"
}]
},
devServer: {
historyApiFallback: true,
contentBase: 'src'
},
plugins: debug ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({
mangle: {except: ['$', 'exports', 'require', 'app']},
compress: {warnings: false},
sourceMap: false
})
]
}
所以基本上,一旦命令运行npm run postinstall
,就会根据webpack.config.js(输出)在目录中生成bundle。但是在运行'npm start'之前,请记住在package.json中包含命令NODE_ENV=production webpack -p
。见下面的例子..
{
"name": "",
"version": "1.0.0",
"description": "",
"main": "./src/bundle.js",
"engines": {
"node": "6.4.0"
},
"scripts": {
"start": "node ./src/server.js",
"postinstall": "NODE_ENV=production webpack -p"
},
"author": "",
"license": "ISC",
"dependencies": ...