How to migrate NPM package to an organization @sco

2020-05-31 04:46发布

NPM has recently introduced @scopes / organizations for the modules. Is there a good way to migrate existing modules to the organization? Are there any tools for automating it for a large number of packages? Does NPM support redirects, so that other software could still use the old name, yet get a notification that it should be updated?

标签: node.js npm
2条回答
够拽才男人
2楼-- · 2020-05-31 05:32

You can change your package.json from:

"name": "project-name"

to:

"name": "@scope/project-name"

and publish the package:

npm publish --access=public

Update: The --access=public argument is needed to make the scoped package public - otherwise it will be private by default. Instead of the command-line argument you can set access to "public" in the publishConfig section of your package.json:

"publishConfig": {
  "access": "public"
}

(Thanks to Danilo Bargen and Greg Pratt for pointing it out in the comments!)

See: https://docs.npmjs.com/getting-started/scoped-packages

The npm doesn't support redirects from old names to new names but you can deprecate the old package with:

npm deprecate <pkg>[@<version>] <message>

So that people who install the old version would be notified that they should install another package instead.

See: https://docs.npmjs.com/cli/deprecate

查看更多
smile是对你的礼貌
3楼-- · 2020-05-31 05:33

Another way to do this that doesn't involve renaming the package, is to go to the team settings in your organization on the npm website (there's a default team called "developers"). There's a button there to add an existing package to the team.

This way you actually transfer the package, instead of republishing it under a different name.

查看更多
登录 后发表回答