如何将NPM包迁移到组织@scope

Yur*_*rik 18 node.js npm

NPM最近为模块引入了@scopes /组织.有没有一种将现有模块迁移到组织的好方法?是否有任何工具可以自动化大量的包?NPM是否支持重定向,以便其他软件仍然可以使用旧名称,但是会收到应该更新的通知吗?

rsp*_*rsp 34

您可以从以下位置更改package.json:

"name": "project-name"
Run Code Online (Sandbox Code Playgroud)

至:

"name": "@scope/project-name"
Run Code Online (Sandbox Code Playgroud)

并发布包:

npm publish --access=public
Run Code Online (Sandbox Code Playgroud)

更新:--access=public需要使用参数来使作用域包公开 - 否则默认情况下它将是私有的.取而代之的是命令行参数可以设置access到"public"在publishConfig你的部分package.json:

"publishConfig": {
  "access": "public"
}
Run Code Online (Sandbox Code Playgroud)

(感谢Danilo Bargen和Greg Pratt在评论中指出它!)

请参阅:https://docs.npmjs.com/getting-started/scoped-packages

npm不支持从旧名称到新名称的重定向,但您可以弃用旧包:

npm deprecate <pkg>[@<version>] <message>
Run Code Online (Sandbox Code Playgroud)

因此,安装旧版本的人会收到通知他们应该安装另一个软件包.

请参阅:https://docs.npmjs.com/cli/deprecate

  • publish命令应该包含`--access = public`参数. (11认同)
  • 或者将""publishConfig":{"access":"public"},`添加到package.json中,否则默认情况下它将作为私有方式发布 (2认同)

sud*_*ian 5

另一种不涉及重命名包的方法是在 npm 网站上转到组织中的团队设置(有一个名为“开发人员”的默认团队)。那里有一个按钮可以将现有包添加到团队中。

通过这种方式,您实际上可以传输包,而不是使用不同的名称重新发布它。

  • 我刚刚尝试过这个。它不会将包传输到组织,它只是允许组织中的人员发布对原始包的更改。 (2认同)