Можно ли упаковать два разных модуля в один webpack.config? - PullRequest
2 голосов
/ 07 июля 2019

У меня есть код JS, который содержит два модуля в папке src.

  • awsdk: основная бизнес-логика с основными моделями и службами
  • awfre: как подмодуль,первый использует некоторую новую бизнес-логику.

Мы хотим, чтобы webpack имел два файла JS, по одному на каждую папку (как описано выше), возможно ли это?

ПРИМЕЧАНИЕ: я использую webpack v. ^ 3.10.0

РЕДАКТИРОВАТЬ: Это мой webpack.config.js файл:

const path = require('path');
const webpack = require('webpack');
const pkg = require('./package.json');
const fs = require('fs');

const banner = `${pkg.name} - ${pkg.version} - (c) 2017 - ${pkg.author} - ${pkg.homepage} \n\n ${fs.readFileSync('LICENSE').toString()}`;

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, './awsdk_module/lib/'),
    filename: 'awsdk.js',
    library: 'awsdk',
    libraryTarget: 'umd',
    umdNamedDefine: true,
  },
  devtool: 'source-map',
  module: {
    noParse: [/dtrace-provider$/, /safe-json-stringify$/, /mv/],
    rules: [
      {
        test: /\.js$/,
        include: path.join(__dirname, './src/awsdk'),
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
        },
      },
      {
        test: /\.js$/,
        include: path.join(__dirname, './specs'),
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
        },
      },
    ],
  },
  node: {
    console: false,
    fs: 'empty',
    net: 'empty',
    module: 'empty',
    tls: 'empty',
  },
  devServer: {
    contentBase: path.join(__dirname, './specs'),
    inline: true,
    port: 8081,
  },
  plugins: [
    new webpack.BannerPlugin(banner),
  ],
};

1 Ответ

2 голосов
/ 07 июля 2019

Webpack поддерживает несколько выходов через поле конфигурации entry.

Просто дайте ему объект.Примерно так:

{
  entry: {
    awsdk: require.resolve(__dirname, './awsdk/index.js'),
    awfre: require.resolve(__dirname, './awfre/index.js')
  }
}

Вам также потребуется обновить output.filename, чтобы использовать заполнитель [name]:

output: {
  filename: "[name].js"
}

Обратите внимание, что по умолчанию webpack v4 будет пытаться вытащитьобщие зависимости в комплекты "vendor", так что в итоге вы можете получить больше выходных комплектов, чем дадите им записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...