4

WEBPACK @ 2.2 WEBPACK-MERGE @ 2.4

我正在使用 webpack 合并来进行智能开发或生产配置。

我的开始脚本看起来像

}
"scripts": {
  "start": "webpack --env=production & node start.js",
  "dev": "webpack-dev-server --env=dev",
},

我的 webpack-config 看起来像这样:

const webpack = require('webpack')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const CompressionPlugin = require('compression-webpack-plugin')
const webpackMerge = require('webpack-merge')

const baseConfig = function(env) {
  return {
    output: {
      path: '/public/',
      filename: 'index.js',
      publicPath: '/public/',
    },
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/,
          use: ['babel-loader'],
        },
        {
          test: /\.css$/,
          loader: ExtractTextPlugin.extract({
            fallbackLoader: "style-loader",
            loader: "css-loader",
            publicPath: "/public/",
          }),
        },
      ],
    },
    resolve: {
      extensions: ['.js', '.css'],
    },
    plugins: [
      new webpack.DefinePlugin({
        'process.env': { NODE_ENV: JSON.stringify(env) },
      }),
      new ExtractTextPlugin({
        filename: "bundle.css",
        disable: false,
        allChunks: true,
      }),
    ],
  }
}

module.exports = function(env) {
  return webpackMerge(baseConfig(env), env === 'dev' ? {
    devtool: 'cheap-module-source-map',
    entry: [
      'react-hot-loader/patch',
      'webpack-dev-server/client?http://localhost:8080',
      'webpack/hot/only-dev-server',
      './app/index.js',
    ],
    devServer: {
      hot: true,
      publicPath: '/public/',
      proxy: {
        "/api/**": "http://localhost:3333",
        "/auth/**": "http://localhost:3333",
      },
    },
    plugins: [
      new webpack.HotModuleReplacementPlugin(),
      new webpack.NamedModulesPlugin(),
    ],
  } : {
    devtool: 'inline-source-map',
    entry: [
      './app/index.js',
    ],
    plugins: [
      new webpack.optimize.UglifyJsPlugin({
        comments: false,
      }),
      new webpack.LoaderOptionsPlugin({
        minimize: true,
      }),
      new webpack.optimize.AggressiveMergingPlugin(),
      new CompressionPlugin({
        asset: "[path].gz[query]",
        algorithm: "gzip",
        test: /\.js$|\.css$|\.html$/,
        threshold: 10240,
        minRatio: 0.8,
      }),
    ],
  })
}

Webpack 在本地成功编译,但是当我尝试将其部署到 heroku 时,papertrail 中的输出如下所示:

> webpack --env=production & node start.js 
Config did not export an object. 

有任何想法吗?

4

1 回答 1

2

我有同样的问题,我忘了安装 webpack 开发服务器:
npm install --save-dev webpack-dev-server

希望能帮助到你!

于 2017-03-26T16:28:53.940 回答