<h3 class="catListTitle">一、npm包结构(编写)</h3>

npm包实际是一个存档文件,即一个目录直接打包为.zip或tar.gz格式的文件,安装后解压还原为目录。完全符合CommonJS规范的包目录应该包含如下这些文件。

package.json : 包描述文件。

bin: 用于存放可执行二进制文件的目录。

lib:用于存放javascript代码的目录。

doc:用于存放文档的目录。

test: 用于存放单元测试用例的代码。

我们开发npm包模块的时候,就可以按照以上目录结构,进行开发。

<h3 class="catListTitle">二、npm包发布</h3>

1.npm init

生产package.json文件,里面要注意参数, repository:""一定要填写仓库地址 ,因为最后npmjs,会从线上仓库获取。

2.注册包仓库账号

为了维护包,NPM必须要使用仓库账号才允许将包发布到仓库中。注册账号的命令是npm adduser。这也是提问式的交互,按顺序进行即可:

npm adduser
Username:pingfan
Email:(xxx@sinaapp.com)

如果已经注册账号:

则我们用npm login 登录即可

证明是否登录成功:

npm whoami

3.上传npm包

上传包的命令是 npm publish <floder> .在刚刚创建的package.json文件所在的目录下,执行npm publish .开始上传,相关代码如下:

npm publish .
npm http PUT http://registry.npmjs.org/net-scan
npm http 400 http://registry.npmjs.org/net-scan
npm http PUT http://registry.npmjs.org/net-scan
npm http 201 http://registry.npmjs.org/net-scan
npm http GET http://registry.npmjs.org/net-scan
npm http 200 http://registry.npmjs.org/net-scan
npm http PUT http://registry.npmjs.org/net-scan/-/net-scan-0.0.0.tgz/-rev/1-96a1
2fd6f9e8e5359489a9f59d114f90
npm http 201 http://registry.npmjs.org/net-scan/-/net-scan-0.0.0.tgz/-rev/1-96a1
2fd6f9e8e5359489a9f59d114f90
npm http PUT http://registry.npmjs.org/net-scan/0.0.0/-tag/latest
npm 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 安装它:

npm install xxx -save --registory=http://registory.npmjs.org

管理包权限:

通常,一个包只有一个拥有权限进行发布。如果需要多人进行发布,可以使用npm owner 命令帮助你管理包的所有者:

npm owner ls eventproxy

使用这个命令,也可以添加包的拥有者,删除一个包的拥有者:

npm owner ls <package name>
npm owner add <user> <package name>
npm owner rm <user> <package name>

<h3 class="catListTitle">三、npm包发布问题及解决</h3>

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版本一定要大于上一次。

资料参考:

npm publish 发布示例

编写自己的NPM包

【转】npm publish 发布的更多相关文章

  1. npm publish 发布

    前言 我们npm publish发布的时候,一定是本地文件发布到远程仓库,并且登录到http://registry.npmjs.org(即npm adduser或npmlogin)之后,才可以进行发布 ...

  2. npm publish 发布失败 无法连接 https://registry.npmjs.org

    自己写的npm包,之前每次更新都是正常发布,最近做个一个更新,想发布,然后npm publish 竟然失败, 错误提示如下: npm ERR! network request to https://r ...

  3. npm包发布记录

    下雪了,在家闲着,不如写一个npm 包发布.简单的 npm 包的发布网上有很多教程,我就不记录了.这里记录下,一个复杂的 npm 包发布,复杂指的构建环境复杂. 整个工程使用 rollup 来构建,其 ...

  4. Vuejs 使用 lib 库模式打包 umd 解决 NPM 包发布的问题

    由于升级了 v0.2 版 GearCase 使用打包工具从 parcel 更换成 vue-cli 3.x.因此打包后发布 NPM 包的方式与之前有很大的差异,这也导致了在发布完 GearCase v0 ...

  5. npm包发布过程

    在上一章节中,我封装了一个基于react的树状组件,后来想把它发布到npm上,下面主要介绍一下发布过程中遇到的问题: 1.去注册npm账号,注册地址(https://www.npmjs.com), 再 ...

  6. 在npm当中发布自己的包的方法

    首先需要一个注册一个npm账号,注意,必须验证邮箱,不然是无法发布包的!下面是当时的报错 接着在你需要发布的包的文件夹下面打开你的cmd或者其他的命令行输入工具  输入  npm init 初始化你的 ...

  7. 把自己的代码发布到npm(npm publish)

    写了代码如何发布到npm包? 示例 demo1 demo2 1.注册npm账号 在npm官网注册https://www.npmjs.com/注意邮箱要验证,会发送验证链接到你的注册邮箱,没有验证的话是 ...

  8. 记一次按需加载和npm模块发布实践

    按需加载 在使用 lodash 的时候我们可以使用这样的代码 //一 import {omit} from "lodash"; //二 import l from "lo ...

  9. 在npm上发布一个自己的包

    1.首先你要在npm上创建一个账号,这里需要输入邮箱的,注意激活邮箱否则无法publish自己的包 2.在本地创建一个文件夹,输入npm init初始化项目,这里是我使用npm init创建的pack ...

随机推荐

  1. linux 命令02

    cp 文件 路径 文件拷贝 cp -a 目录 路径 拷贝目录 cd .. 回到上一级目录 mv 需要移动目录(文件) 移动目的地 移动目录(文件) pwd 查看用户当前所在路径 ls 查看目录列表 m ...

  2. Linux(Ubuntu)下安装NodeJs

    用以下命令来升级系统,并且安装一些Node.JS必要的包. Linux(Ubuntu)下安装NodeJs 安装nodeJS之前,如果没有安装g++ make libssl-dev等, 1.更新系统和依 ...

  3. JS心得——判断一个对象是否为空

    判断一个对象是否为空对象,本文给出三种判断方法: 最常见的思路,for...in...遍历属性,为真则为"非空数组":否则为"空数组" 2.通过JSON自带的. ...

  4. NOI2016滚粗记

    首先明确,博主是个渣渣... 7月19日 出发啦,准备去哈尔滨,临走时爸爸迟迟不肯离去站台口,凝望着我,心理很感动..内心的压力瞬间增大2333,附候车室图片.. 在火车上怎么也睡不着2333 7月2 ...

  5. react+redux官方实例TODO从最简单的入门(3)-- 删

    上一篇文章我们实现了增删改查中<增>这个功能 那么这一篇我们将实现第二个功能,删! 首先增加一个状态: actions中增加对应的约定 到reducer里面设置执行的函数(这里todo.i ...

  6. java 写文本换行

    import org.apache.commons.io.FileUtils; public static void main(String[] args) throws IOException { ...

  7. Windows Server 2012 在桌面上显示”我的电脑”图标

    1.本地方式如果是在Windows Server 2012本地控制台下,直接按Win(键盘上的微软徽标键)+R,输入: rundll32.exe shell32.dll,Control_RunDLL ...

  8. Java控制Appium server start/stop

    相信很多人都会遇到这种场景,在进行appium自动化的时候用Windows OS,不好实现后台运行,每次启动Appium server: 使用Appium GUI版手动点击 就是在cmd line 启 ...

  9. 远程ssh登陆时报错:/bin/bash: Permission denied

    远程普通用户ssh登录时,提示/bin/bash: Permission denied,用户名mas,密码正确. 首先上个图,用户远程登录步骤,转自http://www.tldp.org/LDP/LG ...

  10. adb connect 出现timeout的处理方式

    默认的timeout是5000ms毫秒,如果是断点调试的时候,经常会出现timeout, 所以修改这个值就不会出现timeout了, Eclipse下的设置位置: Window->Prefere ...