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 xxx@1.1.1(包名@版本名)删除指定版本
- 根据规范,只有在发包的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所有者的身份登陆的吗?)
【提示】在发包前可以通过npm的搜索引擎查找是否已存在相同名称的包
- 【注意点2】还有一点要注意的是npm对包名的限制:不能有大写字母/空格/下滑线!
(其实在上面的例子中我原本打算写成penghuwanAPP的,报错。。。改成penghuwan_app,又报错,最后不得不改成penghuwanapp。。。)


- 【注意点3】你的项目里有部分私密的代码不想发布到npm上?
将它写入.gitignore 或.npmignore中,上传就会被忽略了
npm学习(七)之如何发布包、更新发布包、删除发布包的更多相关文章
- npm学习(四)之如何安装全局包、更新全局安装的包、卸载全局安装的包
如何安装全局包 有两种方式用来安装 npm 包:本地安装和全局安装.选用哪种方式来安装,取决于你如何使用这个包. 如果你想将其作为一个命令行工具,那么你应该将其安装到全局.这种安装方式后可以让你在任何 ...
- npm学习(三)之如何安装本地包、更新本地安装的包、卸载本地安装的包
如何安装本地包 有两种方式用来安装 npm 包:本地安装和全局安装.至于选择哪种方式来安装,取决于我们如何使用这个包. 如果你自己的模块依赖于某个包,并通过 Node.js 的 require 加载, ...
- npm 学习笔记
一.介绍 1.是什么 npm 全称是 Node Package Manager,即 Node 包管理工具. 但是发展到后来,并不仅是适用于 node.js 的包. 所以现在看 node_modules ...
- npm学习(九)之README.md文件
包括文档(readme.md) npm建议您包含一个readme文件来记录您的包.自述文件必须有文件名readme.md.文件扩展名.md表示该文件是一个标记(markdown)文件.当有人发现您的包 ...
- npm学习(十三)之npm命令
npm:查看npm所有命令 自己写包可能用到的命令: npm adduser:注册 npm login:登录 npm whami:查看当前用户名 npm init:初始化包的信息 npm publis ...
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...
- NPM 学习笔记整理
NPM 学习笔记整理 阅读 550,2017年06月04日 发布,来源:blog.ihoey.com 什么是 NPM npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ru ...
- day 85 Vue学习七之vue-cookie
Vue学习七之vue-cookie 通过vue如何操作cookie呢 参考链接:https://www.jianshu.com/p/535b53989b39 第一步:安装vue-cookies ...
- iOS学习网站及大牛网址(实时更新)
iOS学习网站及大牛网址(实时更新) 学习网站 https://github.com/Tim9Liu9/TimLiu-iOS 自己总结的iOS.mac开源项目及库 https://github.co ...
随机推荐
- 扫描工具-Nikto
靶机 192.168.1.101 攻击机 192.168.1.102 尝试ping命令 第一个工具 作用 Httrack --->(把目标的网站复制过来) 这样可以减少与目标系统的交互 mkdi ...
- Maven项目解决Remove '@override' annotation终极方案
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- 客户端浏览器向服务器发起http请求的全过程
http协议的参考:http://blog.csdn.net/hefeng6500/article/details/75081047 (1)浏览器先搜索自身的DNS缓存 (2)操作系统搜索自身的DNS ...
- IDEA创建各种不同的工程的方法
javaWeb工程 maven创建javaSE项目 上面点击next: 项目右下角选择自动导入: maven创建javaWeb工程 项目右下角选择自动导入maven项目 上面创建成功之后发现没有jav ...
- xstream解析xml时遇到特殊字符出错
在xml中有"&"符号时,解析xml出错 解决办法: 将&替换成&
- pip安装selenium时,报错“You are using pip version 10.0.1, however version 18.0 is available.”的问题
pip安装selenium,pip install selenium 类型这样错误 1 原因可能不是以管理员身份运行cmd安装selenium 2 解决方式 也是要管理员身份运行 重点在最后一句 ...
- 【转】Unity ZTest 深度测试 & ZWrite 深度写入
原文连接:https://www.cnblogs.com/ljx12138/p/5341381.html 参考另一篇写的比较好的:Unity Shader中的 ZTest & ZWrite 初 ...
- 自己用canvas写的贪吃蛇代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Unity Shader 基础
推荐: https://www.cnblogs.com/nanwei/p/7277417.html 上面链接作者的整个系列都写的不错 https://www.cnblogs.com/nanwei/ca ...
- python学习之面向对象(三)
6.8 类的结构细化 6.8.1 类的私有成员 类中的私有成员包括:私有类的属性,私有对象属性,私有类方法 私有静态属性 类的内部可以访问,类的外部不可以访问,派生类中不可以访问 class A: _ ...