不包含对等依赖性而构建的Webpack

时间:2018-11-20 05:28:29

标签: javascript reactjs webpack

我正在构建一个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 :(得分:3)

我知道了。

Webpack的配置为externals。任何指定为外部设备的东西都不会捆绑在一起。

我要做的就是将此配置添加到webpack.config.babel.js

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

此处有更多信息-webpack externals