我正在创建一个React库,已经以某种方式将其发布到npm
。但是,在开发流程中,我遇到了几个问题。
1)package.json (仅显示相关内容)
请注意,react
和peerDependencies
中都存在devDependencies
。我的图书馆甚至不需要react
来使用development
,但是我正在使用的某些软件包依赖于它,因此它位于devDependencies
中。
"peerDependencies": {
"react": "^16.12.0"
...
},
"dependencies": {
...
},
"devDependencies": {
"react": "^16.12.0"
...
}
2)webpack.config.json
我在外部提到过,Webpack不应在构建的包中包含react
,而应依靠react
出现在消费者的环境中。
但是,这不起作用,因为我已经在我的一个库代码(import react from 'react';
中导入了react,因此将其放入包中。 我之所以这么说,是因为我遇到了钩子的多个反应版本错误。
const path = require('path');
module.exports = {
entry: './src/index.jsx',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'index.js',
library: 'react-flexible-sliding-menu',
libraryTarget: 'umd'
},
resolve: { extensions: ['.js', '.jsx'] },
module: {
rules: [
{
test: /\.(js|jsx)$/,
include: path.resolve(__dirname, 'src'),
exclude: /(node_modules|bower_components|build)/,
use: ['babel-loader']
}
]
},
externals: {
// Use external version of React
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react',
umd: 'react'
},
'react-dom': {
root: 'ReactDOM',
commonjs2: 'react-dom',
commonjs: 'react-dom',
amd: 'react-dom',
umd: 'react-dom'
}
}
};