9

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

在不是最漂亮的解决方案中推送已经捆绑的版本。

4

3 回答 3

5

这是一个什么样的应用程序?如果您使用的是 package.json,您可以使用 npm 脚本在安装后步骤中运行 webpack。

于 2014-12-18T20:18:05.097 回答
3

你可以postinstall在你的 package.json 中设置如下NODE_ENV=production webpack -p

然后设置startnode

但是您需要确保将 webpack 配置为生产环境,方法是在 webpack.config.js 或 webpack.config.js(production) 中将其设置为生产配置。

我将 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 bundle 将根据 webpack.config.js(输出)在目录中生成。NODE_ENV=production webpack -p但请记住在运行“npm start”之前将命令包含在您的 package.json 中。见下面的例子..

{
  "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": ...
于 2016-09-23T06:18:52.027 回答
2

我通过将 devDependencies 置于正常依赖项中解决了这个问题,并将安装后脚本更改为:

node_modules/.bin/webpack
于 2016-03-12T13:30:25.940 回答