如何在heroku上构建webpack?

时间:2014-12-01 22:17:58

标签: heroku webpack

部署到Heroku后触发Webpack构建的最佳方法是什么?

将已捆绑的版本推送到最美丽的解决方案中。

3 个答案:

答案 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": ...