首页 > 其他分享 >npm学习(七)之如何发布包、更新发布包、删除发布包

npm学习(七)之如何发布包、更新发布包、删除发布包

时间:2023-11-28 12:49:06浏览次数:41  
标签:npm 版本 删除 撤销 发布 模块

 

 

前言

我们经常使用npm来下载别人的模块或者说包,那么我们如何将自己写的模块上传到npm呢?

了解npm政策

在开始之前,最好回顾一下npm的政策,以防您对站点礼仪、命名、许可或其他指导原则有疑问。

发布包

1、创建用户帐户,要发布,您必须是npm注册表上的用户。如果您不是用户去npmjs.org注册一个npm的账号,或者使用npm adduser创建一个帐户。如果您在站点上创建了一个用户帐户,请使用npm登录从您的终端访问您的帐户。

2、验证邮箱

随便发点东西给邮箱就OK

 

3、登录 

命令:npm login

4、查看当前用户

命令:npm whoami

检查您的用户名是否已添加到注册表https://npmjs.com/~username

5、新建一个文件夹并进入

6、初始化一些包的相关信息

命令:npm init

  • package name(包名字)
  • version(包版本)
  • description(包描述)
  • entry point(包里面主文件也就是入口地址)
  • test command(包的测试命令是什么,可以先不指定)
  • git repository(git地址,这样就可以从npm官网直接点到git上,可以先不指定)
  • keywords(关键字,别人搜东西时怎么搜到比较方便)
  • author(作者)
  • license: (ISC)(包遵循什么样的开源协议)

之后会生成一个package.json文件

7、新建一个文件用来存放包(模块)

8、发布包(模块)

命令:npm publish 

 9、在官网npmjs.org搜索查看我们上传的包(模块)

更新包

10、如果我们更新了包(模块)

  • 首先修改package.json文件中的版本

  • 然后执行命令npm publish发布新版本

  • 在官网查看

删除包

11、如果我们想要删除包(模块)

这里要说一点,取消发布包可能并不像你想象得那么容易,这种操作是受到诸多限制的,撤销发布的包被认为是一种不好的行为(试想一下你撤销了发布的包[假设它已经在社区内有了一定程度的影响],这对那些已经深度使用并依赖你发布的包的团队是件多么崩溃的事情!)

  • 首先如果就是想要删除当前的这个版本,执行命令npm unpublish xxx(包名),去官网查看发现已经没有这个包了,如果权限不够加上 --force

  • 使用命令npm unpublish [email protected](包名@版本名)删除指定版本
  • 根据规范,只有在发包的24小时内才允许撤销发布的包( unpublish is only allowed with versions published in the last 24 hours),需要我们发邮件给官方来删除
  • 即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同,版本相同,因为这两者构成的唯一标识已经被“占用”了)
  • 例如我在撤销包后尝试再发布同一名称+同一版本的包

报错,并建议我修改包的版本

npm unpublish的推荐替代命令:npm deprecate <pkg>[@<version>] <message>

使用这个命令,并不会在社区里撤销你已有的包,但会在任何人尝试安装这个包的时候得到警告

例如:npm deprecate penghuwanapp '这个包我已经不再维护了哟~'

注意事项

  • 【注意点1】不能和已有的包的名字重名!
  例如我尝试把包名改成'react'显然已有的包:   

  然后发包的时候就会...

  

  (翻译:你没有发布react包的权限,请问你是以react所有者的身份登陆的吗?)

  【提示】在发包前可以通过npm的搜索引擎查找是否已存在相同名称的包

  • 【注意点2】还有一点要注意的是npm对包名的限制:不能有大写字母/空格/下滑线!

  (其实在上面的例子中我原本打算写成penghuwanAPP的,报错。。。改成penghuwan_app,又报错,最后不得不改成penghuwanapp。。。)

  

    

  • 【注意点3】你的项目里有部分私密的代码不想发布到npm上?

  将它写入.gitignore 或.npmignore中,上传就会被忽略了

参考

【npm】利用npm安装/删除/发布/更新/撤销发布包 

标签:npm,版本,删除,撤销,发布,模块
From: https://www.cnblogs.com/onesea/p/17861653.html

相关文章

  • npm学习(六)之如何创建 Node.js 模块
      如何创建Node.js模块Node.js模块是一种可以发布到npm的包。当你创建一个新模块时,创建 package.json 文件是第一步。你可以使用 npminit 命令创建 package.json 文件。命令行中将会提示 package.json 字段中需要你输入的值。名称(name) 和 版本(version) 这......
  • npm学习(三)之如何安装本地包、更新本地安装的包、卸载本地安装的包
     如何安装本地包有两种方式用来安装npm包:本地安装和全局安装。至于选择哪种方式来安装,取决于我们如何使用这个包。如果你自己的模块依赖于某个包,并通过Node.js的 require 加载,那么你应该选择本地安装,这种方式也是 npminstall 命令的默认行为。如果你想将包作为一......
  • npm学习(四)之如何安装全局包、更新全局安装的包、卸载全局安装的包
      如何安装全局包有两种方式用来安装npm包:本地安装和全局安装。选用哪种方式来安装,取决于你如何使用这个包。如果你想将其作为一个命令行工具,那么你应该将其安装到全局。这种安装方式后可以让你在任何目录下使用这个包。比如grunt就应该以这种方式安装。如果您希......
  • npm学习(二)之如何防止权限错误
     如何防止权限错误如果您在尝试全局安装包时看到EACCES错误,请阅读本章。如果更改安装npm的目录,通常可以避免此错误。要做到这一点,要么使用版本管理器重新安装npm(推荐)或手动更改npm的默认目录。选项一:使用节点版本管理器重新安装这是避免权限问题的最佳方法,在安装节点版......
  • npm学习(一)之安装、更新以及管理npm版本
      安装npm安装前须知:npm是在Node中编写的,因此需要安装Node.js才能使用npm。可以通过Node.js网站安装npm,或者安装节点版本管理器NVM。如果只是想开始探索npm,使用Node.js安装方法是最快的。如果您是一名高级开发人员,准备投入工作并使用版本,请使用node版本管理器。如果你不......
  • npm学习(十三)之npm命令
      npm:查看npm所有命令自己写包可能用到的命令:npmadduser:注册npmlogin:登录npmwhami:查看当前用户名npminit:初始化包的信息npmpublish:发布包/更新包npmpublish--access=public:发布公共作用域包npmunpublishxxx(包名) --force:强制删除包npm......
  • npm学习(十六)之package-lock.json和package.json的作用
      转自:https://www.cnblogs.com/cangqinglang/p/8336754.htmlpackage-lock.json的作用就是锁定安装依赖时包的版本,并且需要上传到git,以保证其他人npminstall时安装的依赖能够保持一致 根据官方文档,这个package-lock.json是在`npminstall`时候生成的一份文件,用以记录......
  • npm学习(十四)之npm5踩过的坑!
     1.版本问题导致环境问题npm5之前我们第一次npminstall时是根据package.json来安装相关依赖的,但是它里面的版本不固定,因此默认会根据最高的版本来安装相关依赖,但是在npm5是根据package-lock.json来安装相关依赖的,但前提是没有在命令行中新安装依赖或者更改package.json,否则......
  • npm学习(十五)之理解npm、nvm、nodejs之间的关系
      nvmnvm:nodeJs版本管理工具,管理nodejs版本和npm版本,使用nvm安装nodejs时会将npm一起安装下来nodejsnodeJs: 一种高效的JavaScript运行环境npmnpm:是随同nodeJs一起安装的包管理工具,npm管理对应nodeJs的第三方插件  常见的使用场景有以下几种:  .允许用户从......
  • npm学习(十一)之package-lock.json
      package-lock.json描述对于npm修改node_modules树或package.json的任何操作,都会自动生成package-lock.json,它描述生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。此文件拟提交至来源资料库,并可作以下用途:描述依赖关系树的单一表示形式,以确保队......