发布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: 完成之后,可以看 ...
随机推荐
- 经典的PHPer为什么被认为是草根?
PHPer是草根吗? 从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务.同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单.开源的思想,这也使得PHP得以快速的发展,并且 ...
- 25.75k8s
扣子helm上传dm需要在 local下执行 helm repo index helm list --tls (加上--tls才可以)
- python数据结构-如何实现用户的历史记录功能
如何实现用户的历史记录功能 使用collections中的deque from collections import deque dq = deque([], 5) dq.append(1) dq.a ...
- cocos中FPS数值的含义
在cocos2d-x 2.x ,大家都看到了左下角的FPS变成3行,多了两行数据. 1.最上面一行是指的当前场景的渲染批次.(简单理解为需要渲染多少个贴图出来) 2.中间一行是渲染每一帧需要的时间. ...
- 在服务器上搭建node环境
一般公司的发布是后台人员完成的,但是作为开发不会发布项目还是有点不高级的感觉 因为没有搭建虚拟机于是就直接在我阿里云的服务器上搭建了node环境, 第一步,前往node官网下载linux下的阿里云的镜 ...
- windows----------如何修改windows服务器远程端口
远程连接并登录到 Windows 实例. 选择开始 > 运行,输入 regedit 打开注册表编辑器. 查找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe ...
- sql 小技巧
declare @pids varchar(max)='' ),pid)+','+@pids from product where pname like '%red%' select @pids
- easy UI的密码长度以及重复输入验证
自己些项目的时候找的时候也找了一会,所以存下来下次用的时候可以直接用了. 话不多说,直接上代码 <tr> <td>密码:</td> <td><in ...
- 创建servlet程序知识点详解---servlet-day12
自定义标签 (1)编程步骤 step1 jsp标签分为复杂标签技术(old),简单标签(new) 注(了解) jsp标签技术分为复杂标签技术(old),简单标签技术(new) step2 ###MVC ...
- java-面向对象的多态性摘要
多态的作用就是用来将接口和实现分离开,改善代码组织结构,增强代码可读性,便于代码的维护. 在java中,讨论多态就是讨论方法调用的绑定,绑定就是将一个方法调用同一个方法主体联系起来.在java中通常叫 ...