Webpack для сборки без учета одноранговых зависимостей - PullRequest
0 голосов
/ 20 ноября 2018

Я собираю библиотеку React и использую Webpack для ее сборки.Я хорошо знаю концепцию зависимостей и зависимостей.

В проекте React указывается как одноранговая зависимость.

"peerDependencies": {
  "react": ">= 16.3.0",
  "react-dom": ">= 16.3.0"
}

Это мой build скрипт

"build": "webpack --config webpack.config.babel.js"

, а это мой webpack.config.babel.js

import path from 'path';
import CleanWebpackPlugin from 'clean-webpack-plugin';
const packageJson = require('./package.json');

export default () => ({
  mode: 'production',
  entry: {
    index: path.join(__dirname, 'src/index.js')
  },

  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].js',
    library: packageJson.name,
    libraryTarget: 'umd'
  },

  module: {
    rules: [
      {
        test: /.jsx?$/,
        exclude: /node_modules/,
        include: path.join(__dirname, 'src'),
        use: [
          {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env', '@babel/preset-react']
            }
          }
        ]
      },
      {
        test: /\.(scss)$/,
        loader: 'style-loader!css-loader!sass-loader'
      }
    ]
  },

  resolve: {
    extensions: ['.js', '.jsx', '.scss']
  },

  plugins: [new CleanWebpackPlugin(['dist/*.*'])],
  optimization: {
    splitChunks: {
      name: 'vendor',
      minChunks: 2
    }
  }
});

Каждый раз, когда я строю, код React включается в связанный файл.Я не уверен, как связать библиотеку, не включая React в связанный файл.

1 Ответ

0 голосов
/ 20 ноября 2018

Я понял это.

Webpack имеет конфигурацию под названием externals. Все, что указано как внешнее, не будет объединено.

Все, что мне нужно было сделать, это добавить эту конфигурацию в webpack.config.babel.js

externals: {
  react: 'react',
  reactDOM: 'react-dom'
}

Более подробная информация здесь - внешняя упаковка

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