前几天封装了公用的locaStorage组件,当然封装后需要发布npm官网,于是摸索了一番终于搞定了,总结下来希望对大家有所帮助

npm安装的package一般支持下面几大类:

本地包

url远程包

仓库中的包

之前有写过如何链接本地和仓库中的包,想了解的可以点这里,下面进入正题介绍npm发布包包到公共的平台上

一  npm包发布

1.注册包仓库账号

为了维护包,NPM必须要使用仓库账号才允许将包发布到仓库中。注册账号的命令是npm adduser。

$ npm adduser
Username:
Password:
Email:

当然注册也可以直接到官网注册结果是一样的

登陆 https://www.npmjs.com 用邮箱注册接收验证邮件验证就完事了
(此处有两封邮件:Welcome to npm和Verify your npm email address )

如果已经注册账号:

 则我们用npm login 登录即可

 证明是否登录成功: 

npm who am i

2.发布

$ npm init //生成package.json,如果有就不用了
$ npm publish [floder] //不带参数默认是当前目录

如果你以后修改了代码,然后想要同步到 npm 上的话请修改 package.json 中的 version 然后再次 publish,更新的版本上传的版本要大于上次

3.权限

 管理包权限:

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

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

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

注:完全符合CommonJS规范的包目录应该包含如下这些文件。

npm包实际是一个存档文件,即一个目录直接打包为.zip或tar.gz格式的文件,安装后解压还原为目录。我们开发npm包模块的时候,就可以按照以下目录结构,进行开发:

  package.json : 包描述文件。

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

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

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

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

4.删除发过的npm包

$  npm --force unpublish testxxxxx

注:删除要用force强制删除。超过24小时就不能删除了。自己把握好时间。(删除npm包 ,很难删除,因为怕线上有人在用)

二 npm包发布问题及解决

1.使用 cnpm 的注意报错:

no_perms Private mode enable, only admin can publish this module

设置回原本的就可以了:

npm config set registry http://registry.npmjs.org 

建议国内采用淘宝的cnpm,发包的时候使用npm 传送门

2.

You cannot publish over the previously published version

npm包package.json中registory属性一定要填写,每次publish npm时package.json中version版本一定要大于上一次。

3.这样的报错信息,往往是没有登录成功

npm publish failed put   unexpected status code 

操作npm login

4.

you do not have permission to publish "your module name". Are you logged in as the correct user?
这种很可能是你的包名已经被别人占用了,只能修改package.json中的name,重新发布。
如果你确定你的包名没有被占用,还有一种可能是本地测试的时候link过或安装过,缓存中已经存在该包,但是测试的时候信息不一致造成的,删除用户npm目录下的自己的包,尝试重新publish。
5.
Request Entity Too Large

这种一般是因为包目录下包含了多余的或者不需要上传到npmjs的文件,在包目录下新建一个.npmignore忽略了就行,规则类似.gitignore

6.

you must verify your email before publishing a new package

这种需要你先验证你的邮箱,可能网速会很慢只要你填写了一个邮件地址,npm就会发一封邮件到你的邮件地址上,打开填写的邮件地址验证即可

三 github项目徽章的添加和设置

如果想让自己的npm包看上去更高大尚一些,可以添加一些徽章,添加徽章很简单可以点击这里去添加想要的徽章

没有伞的孩纸只能拼命奔跑

npm 发包的更多相关文章

  1. npm发包注意

    ES6语法的包需要转换为ES5语法 安装bebel npm install --save-dev babel-cli babel-preset-es2015 babel-preset-es2017 b ...

  2. npm 发包的简易流程

     发包的简易流程: https://www.jianshu.com/p/ea64fd01679c 错误集锦: npm publish error: 403. You do not have permi ...

  3. npm发包流程

    1.注册npm 账号 https://www.npmjs.com/signup 2.初始化npm项目 npm init 根据发的包进行填写: { "name": "wen ...

  4. 基于travis和git tag 实现npm自动化发版

    最近又把烂尾的开源项目alfred-femine拾起来了,这个项目旨在开发一系列前端常用的alfred workflow,提供前端开发的查询效率.时隔这么久,再次搞起,希望自己能够一直维护下去,也欢迎 ...

  5. npm发布包的那些事

    npm发包的那些事 最近一直在研习关于node的知识,发布包虽然是最基础的一点,但由于一些地方的不注意很容易发生错误,我整理了我可能出现过的一些发布包的过程中的一些error,现在分享给大家: 正确的 ...

  6. 魔改了一下bootstrap-treeview组件,发布个NPM包体验一下

    前言 之前在这篇文章 基于.NetCore开发博客项目 StarBlog - (8) 分类层级结构展示 中说到,我为了让文章分类列表支持层级结构,用了一个树形组件,不过这个组件太老了,使用的Boots ...

  7. 发布自己的npm组件库

    发布自己的npm组件库 前期准备 **git上建立自己的仓库,这样子是为了在本地初始化时,可以直接生成对应的 package.json ** 克隆仓库 创建仓库成功后,gitbush本地,执行 git ...

  8. 打造自己的 JavaScript 武器库(转自SegmentFault公众号)

    2017-11-14 SlaneYang SegmentFault 自己打造一把趁手的武器,高效率完成前端业务代码. 前言 作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率.这里提一个小点 ...

  9. 打造自己的 JavaScript 武器库

    原文 https://segmentfault.com/a/1190000011966867 github:https://github.com/proYang/outils 前言 作为战斗在业务一线 ...

随机推荐

  1. 51nod 1068 Bash游戏 V3

    列出前几项可以发现是个规律题,不要被题目的文字所欺骗,字符串处理10^1000即可 #include <bits/stdc++.h> using namespace std; int ge ...

  2. 递推DP UVA 1291 Dance Dance Revolution

    题目传送门 题意:给一串跳舞的动作,至少一只脚落到指定的位置,不同的走法有不同的体力消耗,问最小体力消费多少分析:dp[i][j][k] 表示前i个动作,当前状态(j, k)的最小消费,状态转移方程: ...

  3. HBuilder的默认工作空间的修改

    HBuilder的默认工作空间的修改并不像其他ide一样,在设置里进行更改,而是在工具中进行设置. 1.单击菜单栏“工具”,选择“变更默认代码存放目录” 2.进行修改即可.

  4. 463 Island Perimeter 岛屿的周长

    详见:https://leetcode.com/problems/island-perimeter/description/ C++: class Solution { public: int isl ...

  5. 【LeetCode 33】Search in Rotated Sorted Array

    Search in Rotated Sorted Array 分段有序的数组,二分查找返回下标,没有返回-1 数组有序之后经过 rotated, 比如:6 1 2 3 4 5  or 5 6 7 8 ...

  6. JDK集合框架--ArrayList

    ArrayList,从类名就可以看出来,这是由数组实现的List,即内部是用数组保存元素的有序集合.先看看主要的成员变量,比较简单: public class ArrayList<E> e ...

  7. AJPFX总结在循环中break与continue的区别

    相信刚学编程的人很容易被break,continue这两个关键词搞混淆了,两者都有跳出循环的意思,但是他们到底有什么区别呢?其实很简单,break是结束整个循环体,continue是结束当前这一单次循 ...

  8. iOS循环引用

    iOS循环引用 当前类的闭包/Block属性,用到了当前类,就会造成循环引用 此闭包/Block应该是当前类的属性,我们经常对Block进行copy,copy到堆中,以便后用. 单方向引用是不会产生循 ...

  9. CV方向:纽劢科技,复星,蚂蚁金服,哈喽出行,海康威视

    以下均为CV方向实习面试,岗位算法工程师助理.时间均在2019年3月至4月之间. 纽劢科技(均电话):        技术2面,HR1面 复星(现场):                  技术只有1面 ...

  10. 德尔福 XE5 安卓权限设置

    http://delphi.org/2013/10/delphi-xe5-android-uses-permissions/ The permissions required by a Delphi ...