很抱歉,标题不好(真的不知道我还能给这个问题加上什么标题)。
长话短说,作为第一次React-Component库开发人员。我正在使用 webpack 4 将我的 fancy-react-component-lib 转换为模块。
一切顺利,直到我开始使用npm-link加快本地开发速度。
主要问题是尽管我已经指定了以下内容
//webpack.fancy-react-component-lib.config.js
...
externals: {
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',
},
}
...
//package.json
...
"dependencies": {},
"devDependencies": {
...
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-redux": "^7.0.3",
"react-router-dom": "^5.0.0",
...
},
"peerDependencies": {
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-redux": "^7.0.3",
"react-router-dom": "^5.0.0"
}
...
因此,如果我已通过git语法导入模块
"fancy-react-component-lib" :"git+ssh://git@bitbucket.org/fancy-react-component-lib.git#test1.0.11"
一切正常,最终捆绑的js中只有一个 react 副本。
但是,如果我将npm-link绑定到项目文件夹,则react的第二个副本将添加最终的绑定js。
谁能告诉我为什么?
谢谢
答案 0 :(得分:0)
由于没有人提供更好的答案,所以我将在此处发布我如何解决该问题的
首先,npm链接只不过是一个符号链接。而不是像react的解决方案页面所建议的那样使用npm链接。我已经尝试create symbolic links自己了,而且行得通。
ln -s [your_fancy_lib_project] [project/node_moduels/your_fancey_lib_project]
此外,您还需要在 [your_fancy_lib] / node_modules / react 中创建链接,然后 [your_fancy_lib] / node_moduels / react-dom [项目] / node_moduels / react 和 [项目] / node_moduels / react-dom
ln -s [project/node_moduels/react] [your_fancey_lib_project/node_moduels/react]
ln -s [project/node_moduels/react-dom] [your_fancey_lib_project/node_moduels/react-dom]
当然,请记住在创建符号链接之前先清理文件夹。