2

github のこの 1 つのスレッドを除いて、この機能について話している人をあまり見たことがありません: https://github.com/webpack/webpack/issues/2254

この構成は私にとってはうまく機能していますが、別のターゲットでクライアント側の JavaScript を構築できるように、複数の構成を配列として使用したいと考えています。配列に入れるとすぐに壊れます。

これが私の設定です:

const nodeExternals = require('webpack-node-externals');

const serverConfig = (env = { dev: false }) => ({
  entry: './src/server/index.js',
  target: 'node',
  externals: [nodeExternals()],
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        loader: 'babel-loader',
        query: {
          plugins: ['transform-es2015-modules-commonjs'],
        },
      },
    ],
  },
  resolve: {
    modules: ['src', 'node_modules'],
  },
  output: {
    filename: 'server.js',
  },
  watch: env.dev,
});


module.exports = [serverConfig];

そして、これは私がビルドしようとしたときに私が得るエラーです:

throw new Error("'output.filename' is required, either in config file or as --output-filename");
            ^

Error: 'output.filename' is required, either in config file or as --output-filename
    at processOptions (/home/joe/Websites/LSDM/node_modules/webpack/bin/convert-argv.js:505:11)
    at Array.forEach (native)
    at processConfiguredOptions (/home/joe/Websites/LSDM/node_modules/webpack/bin/convert-argv.js:141:12)
    at module.exports (/home/joe/Websites/LSDM/node_modules/webpack/bin/convert-argv.js:119:10)
    at Object.<anonymous> (/home/joe/Websites/LSDM/node_modules/webpack/bin/webpack.js:141:40)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)

リリースされたばかりの 2.1.0-beta.28 にアップグレードしましたが、まだ発生しています。誰にもアイデアはありますか?

好奇心から --output-filename を使用して出力ファイル名を設定しようとしましたが、次のようになります。

Configuration file found but no entry configured.
Use --help to display the CLI options.

ありがとう、

編集:

関数から配列を返すと、両方が正常にビルドされますが、env.dev を使用して watch が true に設定されなくなり、ビルドして終了するだけです。

const nodeExternals = require('webpack-node-externals');

module.exports = (env = { dev: false }) => {
  const serverConfig = {
    entry: './src/server/index.js',
    target: 'node',
    externals: [nodeExternals()],
    module: {
      loaders: [
        {
          test: /\.js$/,
          exclude: /(node_modules)/,
          loader: 'babel-loader',
          query: {
            plugins: ['transform-es2015-modules-commonjs'],
          },
        },
      ],
    },
    resolve: {
      modules: ['src', 'node_modules'],
    },
    output: {
      filename: 'server.js',
    },
    watch: env.dev,
  };

  const bundleConfig = {
    entry: './src/js/index.js',
    module: {
      loaders: [
        {
          test: /\.js$/,
          exclude: /(node_modules)/,
          loader: 'babel-loader',
          query: {
            plugins: ['transform-es2015-modules-commonjs'],
          },
        },
      ],
    },
    resolve: {
      modules: ['src'],
    },
    output: {
      filename: 'res/js/bundle.js',
    },
  };

  return [serverConfig, bundleConfig];
};
4

0 に答える 0