vy2*_*218 8 node.js npm npm-workspaces
我无法在任何地方找到这个看似显而易见的问题的答案。
\n我在项目中设置了一些 npm 工作区。它\xe2\x80\x99 基本上是一个主项目,其中有几个工作区。它们位于名为 \xe2\x80\x9cpackages\xe2\x80\x9d 的顶级文件夹中,每个文件夹都有自己的 package.json。
\n我需要将工作区添加为主项目的依赖项。我\xe2\x80\x99已将它们添加到主项目的package.json中,但npm一直尝试从npm.org安装它们,因此失败。
\nI\xe2\x80\x99m 使用以下语法:
\n\xe2\x80\x9cworkspaces\xe2\x80\x9d:[\n \xe2\x80\x9cpackages/*\xe2\x80\x9d\n],\n\xe2\x80\x9cdependencies\xe2\x80\x9d: {\n \xe2\x80\x9cworkspace-a\xe2\x80\x9d: \xe2\x80\x9c^0.0.1\xe2\x80\x9d\n \xe2\x80\xa6\n}\nRun Code Online (Sandbox Code Playgroud)\n如何将工作区指定为 package.json 中的依赖项?
\n[更新:主项目的最终使用方式是它是一个完全独立的项目的依赖项]
\n我在根 package.json 中使用显式工作区属性
"workspaces": [
"foo-bar",
"another-package",
"path/to/another/workspace"
]
Run Code Online (Sandbox Code Playgroud)
只需照常添加工作区依赖项(包名称:版本)。我选择使用确切的版本,并且我的所有工作区包都有版本0.0.0。所以我的包 json 看起来像。
"name": "@project/foo-bar",
"dependencies": {
"@project/another-package": "0.0.0"
},
Run Code Online (Sandbox Code Playgroud)
were@project是包范围,根据自己的需要命名。
请注意,许多文章将通配符设置为版本,例如
"dependencies": {
"@project/another-package": "*"
},
Run Code Online (Sandbox Code Playgroud)
在工作区属性中也很常见通配符,例如
"workspaces": [
"packages/*"
]
Run Code Online (Sandbox Code Playgroud)
我更喜欢避免使用 npm 依赖版本的通配符。
使用0.0.0是有效的,如果您喜欢这种约定,它隐式表示该包未在任何注册表上发布。此外,如果您考虑在 npm 上发布一些内部包,使用这种方法可以很好地扩展。
我明确列出了工作区,这是少数原因,因为我进行了检查工作区之间一致性的测试,因此可以更轻松地从根 package.json 读取工作区并对其执行某些操作,而不是打开目录并查找工作区文件夹。
| 归档时间: |
|
| 查看次数: |
6978 次 |
| 最近记录: |