我有两个webpack 2
个项目
第一个,我们称之为lib1
是一个可重用的React组件库。在webpack配置中,它将导出为名为lib1
的库。该项目将react
和react-dom
列为外部依赖项。
第二个,我们称之为proj1
是一个使用lib1
的应用。因为lib1
是在cdn上提供的,所以它被列为外部依赖项。该项目还取决于react
和react-dom
。使用CommonsChunkPlugin
我生成vendor.js
,其中包含react
和react-dom
(以及最终的其他依赖关系)。
当我在浏览器中运行proj1
时,lib1
中的代码会失败,因为它无法找到react
。库按以下顺序加载:
<script src="dist/vendor.js"></script>
<script src="http://cdn.com/lib1/lib1.js"></script>
<script src="dist/bundle.js"></script>
我想问题是我的react
文件未导出react-dom
和vendor.js
。
我尝试使用像这样的库选项(int proj1
):
library: "[name]",
libraryTarget: "umd"
但它创建的window.vendor
不是window.React
和window.ReactDOM
。
我该怎么做?
lib1 config
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, "dist"), // string
filename: "bundle.js",
publicPath: "/dist/",
library: "lib1",
libraryTarget: "umd",
},
module: {
rules: [{
test: /\.js$/,
loader: 'babel-loader',
exclude: path.resolve(__dirname, "node_modules"),
}]
},
externals: ["react", "react-dom"],
};
proj1 config
var webpack = require('webpack');
const path = require('path');
module.exports = {
entry: {
bundle : './src/index.js',
vendor : ['react', 'react-dom']
},
output: {
path: path.resolve(__dirname, "dist"),
filename: "[name].js",
publicPath: "/dist/",
library: "[name]",
libraryTarget: "umd",
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor'
})
],
module: {
rules: [{
test: /\.js$/,
loader: 'babel-loader',
exclude: path.resolve(__dirname, "node_modules"),
}]
},
externals: ["lib1"],
devtool: "source-map"
};