发布npm
前言
我们npm publish发布的时候,一定是本地文件发布到远程仓库,并且登录到http://registry.npmjs.org(即npm adduser或npmlogin)之后,才可以进行发布。
一、npm包结构(编写)
npm包实际是一个存档文件,即一个目录直接打包为.zip或tar.gz格式的文件,安装后解压还原为目录。完全符合CommonJS规范的包目录应该包含如下这些文件。
package.json : 包描述文件。
bin: 用于存放可执行二进制文件的目录。
lib:用于存放javascript代码的目录。
doc:用于存放文档的目录。
test: 用于存放单元测试用例的代码。
我们开发npm包模块的时候,就可以按照以上目录结构,进行开发。
二、npm包发布
1.npm init
生产package.json文件,里面要注意参数,repository:""一定要填写仓库地址,因为最后npmjs,会从线上仓库获取。
2.注册包仓库账号
为了维护包,NPM必须要使用仓库账号才允许将包发布到仓库中。注册账号的命令是npm adduser。这也是提问式的交互,按顺序进行即可:
|
1
2
3
|
npm adduserUsername:pingfanEmail:(xxx@sinaapp.com) |
如果已经注册账号:
则我们用npm login 登录即可
证明是否登录成功:
npm who am i
3.上传npm包
上传包的命令是 npm publish <floder> .在刚刚创建的package.json文件所在的目录下,执行npm publish .开始上传,相关代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
npm publish .npm http PUT http://registry.npmjs.org/net-scannpm http 400 http://registry.npmjs.org/net-scannpm http PUT http://registry.npmjs.org/net-scannpm http 201 http://registry.npmjs.org/net-scannpm http GET http://registry.npmjs.org/net-scannpm http 200 http://registry.npmjs.org/net-scannpm http PUT http://registry.npmjs.org/net-scan/-/net-scan-0.0.0.tgz/-rev/1-96a12fd6f9e8e5359489a9f59d114f90npm http 201 http://registry.npmjs.org/net-scan/-/net-scan-0.0.0.tgz/-rev/1-96a12fd6f9e8e5359489a9f59d114f90npm http PUT http://registry.npmjs.org/net-scan/0.0.0/-tag/latestnpm http 201 http://registry.npmjs.org/net-scan/0.0.0/-tag/latest+ net-scan@0.0.0 |
如果你以后修改了代码,然后想要同步到 npm 上的话请修改 package.json 中的 version 然后再次 publish,更新的版本上传的版本要大于上次


4.安装包
为了体验和测试自己上传的包,可以换一个目录执行 npm install xxx --save 安装它:
|
1
|
npm install xxx -save --registory=http://registory.npmjs.org |
管理包权限:
通常,一个包只有一个拥有权限进行发布。如果需要多人进行发布,可以使用npm owner 命令帮助你管理包的所有者:
npm owner ls eventproxy
使用这个命令,也可以添加包的拥有者,删除一个包的拥有者:
|
1
2
3
|
npm owner ls <package name>npm owner add <user> <package name>npm owner rm <user> <package name> |
三、npm包发布问题及解决
1.使用 cnpm 的注意报错:
no_perms Private mode enable, only admin can publish this module
设置回原本的就可以了:
npm config set registry http://registry.npmjs.org
2.npm包package.json中registory属性一定要填写,每次publish npm时package.json中version版本一定要大于上一次。
3.npm publish failed put 500 unexpected status code 401这样的报错信息,往往是没有登录成功,操作npm login
4.publish Failed PUT 400, unscoped packages cannot be private;
npm publish --access=public
发布npm的更多相关文章
- 创建并发布npm包
1.npm官网创建npm账户 npm网站地址:https://www.npmjs.com/ npm网站注册地址:https://www.npmjs.com/signup 2.命令行工具登录npm np ...
- 使用cnpm搭建私有NPM仓库 发布npm包
关于如何使用cnpm搭建私有的npm仓库看这里→ http://blog.fens.me/nodejs-cnpm-npm/ 我本人还没有机会真正实践操作过,公司的npm仓库是我老大搭建的,我这里仅仅记 ...
- 不会发布npm包?进来看看?
前言 npm(Node Package Manager),一个Node的包管理器,平时我们常用的公共模块(插件)或者叫做包大多都放在上面,所以接下来要封装的插件,我们就简单称它为npm包,本文从就从这 ...
- 开发发布npm module包
开发发布npm module包 问题 在项目开发过程中,每当进入一个新的业务项目,从零开始搭建一套前端项目结构是一件让人头疼的事情,就要重新复制一个上一个项目的前端框架和组件代码库.其中很多功能的模块 ...
- 用@vue/cli发布npm包
1.环境准备 安装node,npm,@vue/cli 2.初始化项目 用@vue/cli创建新项目 vue create mtest-ui 删除public,main.js,App.vue等无关文件, ...
- 前端组件用 Scope 发布 npm 包的方法
1.引言 多人.多组织或多组件发布 npm 包到同一个仓库时,可能出现命名冲突问题. 为了解决这个问题,npm 引入了“scope”(范围)概念. 在 Angular 项目中,我们通常可以看到“@an ...
- 使用Vue-cli3.0创建的项目,如何发布npm包
使用Vue-cli3.0创建的项目,如何发布npm包 在使用vue进行项目开发时,如果我们想要发布一个包,有时候会有点迷糊,不知道应该怎么修改脚手架的默认设置.这里记录一下一些常见的操作. 创建ind ...
- 发布npm时遇到的两个小问题,解决方法
1.出现这个错误 no_perms Private mode enable, only admin can publish this module 错误输出内容 npm ERR! publish Fa ...
- node学习笔记8——发布npm包
1.注册一个npm账号: 2.在控制台输入 npm login: 依次输入你的账号信息,可通过 npm whoami 来验证是否登录成功 3.初始化包,控制台输入 npm init: 完成之后,可以看 ...
随机推荐
- Flask项目示例目录
Flask不同于Django,Django在创建程序时自动得到必要的目录文件,而Flask则只有一个空文件夹,所以关于Flask项目的目录我们需要自行配置. 首先利用pycharm创建一个项目,在根目 ...
- XMLHttpRequest请求被劫持
十几个请求中随机一个转到 <html><head><script language="javascript">setTimeout(" ...
- [warn] _default_ VirtualHost overlap on port 443, the first has precedence
配置文件中添加 NameVirtualHost *:433 保存重启apache
- cocos creator 动态创建精灵
var node = new cc.Node();var sprite = node.addComponent(cc.Sprite);sprite.spriteFrame = new cc.Sprit ...
- Hibernate查询操作
操作前需要创建好Hibernate项目,创建项目,可参考:http://www.cnblogs.com/zhaojinyan/p/9336174.html 一下的例子是从其他贴子粘过来的(知识无国界! ...
- nginx----------nginx日志详细分解
1.客户端(用户)IP地址.如:上例中的 47.52.45.228 2.访问时间.如:上例中的 [03/Jan/2013:21:17:20 -0600] 3.请求方式(GET或者POST等).如:上例 ...
- 前端学习历程--js事件监听
一.事件监听使用场景 1.事件触发多个方法的时候,后一个方法会把前一个方法覆盖掉. window.onload = function(){ var btn = document.getElement ...
- Angular4 HTTP通讯
- (TIP 2018)Technology details of FFDNet
前言 论文地址:见researchgate, 方法继续更新. 解决的问题: 1.discriminative learning methods 用于denoising 任务学习到的是一个对于每种 噪声 ...
- 微信公众号开发流程,jssdk的使用以及签名算法的实现
一 开发流程 1 基本配置-登录自己的公众号 A:新型微信认证,认证过的企业号才可以进行自定义菜单中的连接跳转: B:开发基本配置里面进行开发者iD查询,密码查询和重置和ip白名单配置: C:公众号设 ...