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中,上传就会被忽略了

原文地址:https://www.cnblogs.com/kunmomo/p/11221786.html

时间: 2024-10-10 04:50:48

npm学习(七)之如何发布包、更新发布包、删除发布包的相关文章

npm学习(四)之如何安装全局包、更新全局安装的包、卸载全局安装的包

如何安装全局包 有两种方式用来安装 npm 包:本地安装和全局安装.选用哪种方式来安装,取决于你如何使用这个包. 如果你想将其作为一个命令行工具,那么你应该将其安装到全局.这种安装方式后可以让你在任何目录下使用这个包.比如 grunt 就应该以这种方式安装. 如果您希望依赖于来自您自己模块的包,那么请在本地安装它.例如,如果您正在使用require语句,您将使用这个选项. 将包安装到全局,你应该使用 npm install -g <package> 命令,例如:npm install -g j

npm学习(九)之README.md文件

包括文档(readme.md) npm建议您包含一个readme文件来记录您的包.自述文件必须有文件名readme.md.文件扩展名.md表示该文件是一个标记(markdown)文件.当有人发现您的包时,该文件将出现在npm网站上.在开始之前,请查看一些包页面,了解可以添加到readme文件中的信息,并了解为什么这一点如此重要. 使用任何文本编辑器创建文件. 将它保存在项目目录中,名称为readme.md 发布时,此文档将显示在下载包的web页面上 如何更新ReadMe文件 除非发布包的新版本,

springMVC3学习(七)--Interceptor拦截器

Spring为我们提供了:org.springframework.web.servlet.HandlerInterceptor接口, org.springframework.web.servlet.handler.HandlerInterceptorAdapter适配器, 实现这个接口或继承此类,能够很方便的实现自己的拦截器. 有下面三个方法: Action之前运行 public boolean preHandle(HttpServletRequest request, HttpServletR

Spark学习七:spark streaming与flume集成

Spark学习七:spark streaming与flume集成 标签(空格分隔): Spark 一,启动flume flume-conf.properties文件 agent002.sources = sources002 agent002.channels = channels002 agent002.sinks = sinks002 ## define sources agent002.sources.sources002.type = exec agent002.sources.sour

CorePlot学习七---坐标轴的详细分析

先看代码,有标注,很详细,看看是如何设定x.y轴的可视范围.移动范围.已经如何确定原点的位置的.还有就是如何固定坐标轴!!! //坐标轴的初始化 -(void)axesInit { // Setup plot space: 设置一屏内可显示的x,y量度范围 CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)[xyGraph defaultPlotSpace]; plotSpace.delegate = self; plotSpace.allowsUser

cesium 学习(七) HeadingPitchRoll

cesium 学习(七) HeadingPitchRoll 一.前言 对于模型旋转变换.相机视角变换以及方向变换的处理操作,也就是改变heading.pitch.roll这三个的值.这三个值代表什么意思呢?接下来就专门介绍一下Cesium的HeadingPitchRoll. 二.HeadingPitchRoll HeadingPitchRoll其实也就是欧拉(Euler)角:   机体坐标系与地面坐标系的关系是三个Euler角:yaw,pitch,roll,反应了飞机相对地面的姿态.也就是说Ya

Hibernate批量更新和批量删除批量添加 1(转)

通常,在一个Session对象的缓存中只存放数量有限的持久化对象,等到Session对象处理事务完毕,还要关闭Session对象,从而及时释放Session的缓存占用的内存.批量处理数据是指在一个事务中处理大量数据.以下程序在一个事务中批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段:Transaction tx = session.beginTransaction();Iterator customers=session.createQuery("from Customer c

SQL 级联更新,级联删除的概念

SQL级联更新,级联删除 今天做了个测试,搞清楚了级联更新,级联删除级联删除:当我们没有对键加级联删除的时候,删除主键表中的数据(外键表有引用的数据)时,会报错,不能删除,必须先把相关联的外键数据            删除了,才能删除主键表的数据,但如果新建外键的时候设置了级联删除,那么当我们删除主键表的数据时,数据库就会自动帮我们把相            关联的外键表数据删除掉,这个好理解级联更新:一直困扰我,级联更新有什么用,是更新什么东西呢,今天做了个测试(mssql),终于搞清楚了一

(实践证明,不论是否采用判断,都会弹出对话框。估计是页面发回服务器后,再发来,脚本就丢失了)可能在异步的时候有用

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class Default4 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } /