我正在使用create-react-app在React中创建一个npm包。由于react
和react-dom
被假定在宿主项目中,因此我在package.json中将它们列为peerDependencies和devDependencies。
我了解到,这样仍然可以将两者捆绑在一起,并且为了避免不得不将它们列在我成功完成的webpack配置的外部:
externals: {
react: {
commonjs: 'react',
commonjs2: 'react',
amd: 'React',
root: 'React',
},
'react-dom': {
commonjs: 'react-dom',
commonjs2: 'react-dom',
amd: 'ReactDOM',
root: 'ReactDOM',
},
},
我的问题是:为什么我必须经历第二步?将它们列为peerDependencies是否足够?如果没有,在这种情况下,peerDependencies与常规依赖有何不同?
答案 0 :(得分:2)
npm可以理解对等依赖关系,webpack可以理解对外部依赖关系。两者含义相同,但是由完全不同的软件处理。
虽然运行npm install
不会安装任何对等依赖项,但webpack仍会尝试遍历依赖关系树以尝试找到它们(如果代码中已引用它们)。将它们标记为外部显式告诉webpack显式忽略它们,即使已安装这些对等依赖项,也不要尝试遍历该依赖项分支。