基于this article(以及网络上的其他评论),建议“提升每个devDependency,以便它们可用于每个软件包”。原因是避免使用粗体部分:
让我们来看一个示例,pkg1和pkg2将ESLint定义为devDependency,因此您已经在两个软件包中进行了定义,复制了定义和管理。您可以从两者中提取它,并将其设置为root package.json中的devDependency。这样,所有需要它的项目都可以使用它。
我了解这一点,这就是我一直在设置此特定项目的方式。
但是现在我遇到了一些问题,因为所有工具都安装在根目录下,并且从特定的package文件夹中运行时,这些工具的二进制文件不可用。我该如何解决?
我发现在包devDependency
文件中将工具指定为package.json
会向包node_modules/.bin
文件夹中添加该工具的符号链接二进制文件。但是,如何避免最初出现的“重复定义和管理”问题?
例如:
root/package.json
"devDependencies": {
"eslint": "6.6.0"
}
选项1)
root/packages/foo/package.json
"devDependencies": {
"eslint": "6.6.0"
}
这将创建符号链接,但是我要管理重复的依赖项。
选项2)
root/packages/foo/package.json
"devDependencies": {
"eslint": "^6.6.0"
}
这将创建符号链接,但是我有重复的依赖项要管理,尽管我不需要担心版本,除非我需要将所有软件包升级到下一个主要版本。
选项3)
root/packages/foo/package.json
"devDependencies": {
"eslint": "*"
}
这将创建符号链接,并且没有重复的依赖项要管理。
选项4)
???