npm 发布包填坑指南
2019独角兽企业重金招聘Python工程师标准>>>
最近使用 Npm 发布包时遇到了一些坑,集中记录下以便后续查看。
01.
就个人经验来说,我们写的包往哪儿发布,无非下面三个地方。其中淘宝镜像仓库每隔十分钟会同步一下 Npm 仓库的新模块,所以实际要看的也就是往 Npm 仓库和公司内部搭建的私有 Npm 仓库上如何发布包。搞不清楚他们的关系就会碰到一些欲罢不能的大坑。
Npm 仓库
Npm 仓库是一个公共平台,所有人开发的模块想要共享都可以扔上去,有人需要使用什么功能去上面找即可。缺点是服务器架设在国外,国内下载包时速度比较慢。
淘宝镜像仓库
淘宝镜像仓库由阿里云赞助,在国内搭设的一套服务器,每隔十分钟从 Npm 仓库上同步一下包,内容可以认为和 Npm 仓库是一样的,所以国内一般都会把下载仓库地址设置为淘宝镜像仓库,这样子下载包时会大大加快速度。
公司内部私有 npm 仓库
有的公司内部开发一些私有包不想上传到公共平台 Npm 仓库,于是乎就搭建公司内部的私有 Npm 仓库,与 Npm 仓库其实差不多,只不过有一个是供全世界开发者使用的平台,一个是只供公司内部使用的平台。
02.
介绍下 npm 发布包的机制。以 Npm 仓库为例说明。
告诉 npm 你想往哪个仓库发布包。
往哪个仓库发布包也叫做设置上传/发布地址。这个过程记录在
package.json
文件中。publishConfig
属性就记录着仓库地址。我这里是公司内部搭建的私有 npm 仓库
,所以写了一个内部地址。如果是往Npm 仓库
发布包,该属性可以省略不写。// package.json "publishConfig": {"registry": "http://localhost/repository/npm-hosted/"}
申请进入仓库的权限。
你要往指定仓库发布包,比如往
Npm 仓库
发布包,你得先登录上这个仓库,然后才能进行上传。这是因为 Npm 仓库得知道是谁进行了发布包这个动作,并且还要判断该用户是否有权限进行发布包。这就好比你往一个仓库运输货物,得在大门口登记一下,标明身份不是。如果你的账户名或密码错误,仓库管理员肯定要拦住你,因为你不具备权限进行运输货物。那么怎么获得进入仓库的账户号呢。以 Npm 仓库为例,登录 Npm 官网,在右上角有个
Sign up
按钮,点击进行注册。记录下有用信息:账户名
、密码
、邮箱
。如果是公司内部搭建的私有 Npm 仓库,让管理员给你一个账户密码即可。进入仓库。
就像往仓库运输货物一样,有了进入仓库的权限,那就先登录进入仓库,然后在进行货物上架。
$ npm loginUsername: xxxx Password: Email: (this IS public) xxxxx@qq.com Logged in as xxxx on https://registry.npmjs.org/.
为了安全起见,输入密码不会显示任何东西,你只需输入完成按回车即可,不用担心自己是否没有输入上。
像上述代码所示就是登录成功的标志,并且最后一行可以看到我们是要往
https://registry.npmjs.org/
(Npm 仓库)上发布包的。小tip:
每次登录都要手动输入
账户
、密码
、邮箱
这个步骤很是繁琐,有个简单的方法可以一步到位。以账户
:admin
,密码
:admin123
为例进行说明。打开百度,搜索
base64
关键字,随便点开一个base64 在线编码/解码
条目,在新窗口左侧/上测输入admin:admin123
(也即:账户:密码
格式,中间有个英文格式的冒号),点击编码按钮进行编码得到编码后的值YWRtaW46YWRtaW4xMjM=
。打开 npm 配置文件.npmrc
文件,默认路径为:C:\Users\Administrator\.npmrc
,修改内部内容如下。此后再进行$ npm login
时会自动记住账户密码,一路回车登录即可。_auth="YWRtaW46YWRtaW4xMjM=" email=xxxx@qq.com
发布包。
前面一个步骤成功进入仓库,接下来就进行货物上架即发布包。
切换到要发布那个包的根目录下,输入以下指令等待即可。
$ npm publish
这个过程可能是遇到问题最多的地方。如果失败了,检查
C:\Users\Administrator\.npmrc
文件。一般的使用 Npm 都会配置淘宝镜像仓库,这样我们在下载 npm 包时会大大提升速度。操作如下:$ npm config set registry https://registry.npm.taobao.org
此时打开
.npmrc
文件会看到变化如下:_auth="YWRtaW46YWRtaW4xMjM=" email=xxxx@qq.com registry=https://registry.npm.taobao.org
由于我们这里是往
Npm 仓库
发布包的,这里设置的下载地址是淘宝镜像仓库
,二者不一致会导致错误。可先将最后一行代码删除掉,此时默认下载仓库也是 Npm 仓库。下载仓库地址和上传仓库地址(前面提到的在package.json
文件中设置的)保持一致才能发布包。发布完成后可以再设置下载仓库为淘宝镜像仓库。往公司内部私有 Npm 仓库发布包也要注意这个问题,要保证下载仓库和上传仓库都是
公司内部的 Npm 仓库
。当然,大多数私有仓库都会设置代理地址,二者并不是一模一样,但是要知道都是内部 Npm 仓库即可。更新包。
更新包和发布包操作步骤类似,唯一的区别是要修改下
package.json
中的version
字段,你更新包,总得让包的版本变化一下吧。操作重复上面几步步骤。
03.
总结:
下载地址。
从哪个仓库下载 npm 包,国内一般选择淘宝镜像,为嘛?因为快呀。设置完成后可以在 npm 配置文件
C:\Users\Administrator\.npmrc
中进行查看。如果是从Npm 仓库
下载,将.npmrc
文件中registry
那一行代码删掉即可。设置方式:
$ npm config set registry https://registry.npm.taobao.org
上传地址。
自己开发一个 Node 模块,想往仓库发布共享出去,上传到哪个仓库。如果是往
Npm 仓库
上传,该属性可以不写,默认上传地址即为Npm 仓库
。设置方式:
// package.json "publishConfig": {"registry": "http://localhost/repository/npm-hosted/"}
发布和更新包要保证上传地址和下载地址是同一个仓库的地址。
转载于:https://my.oschina.net/dkvirus/blog/1526525
npm 发布包填坑指南相关推荐
- 开发工具总结(4)之Android Studio3.0填坑指南
序言 Android Studio 3.0 上篇讲了: 全面总结Android Studio2.X的填坑指南 这篇讲一下AS3.0的坑.. 作为这个世界上走在最前沿的生物"猿",怎 ...
- Android Studio 填坑指南
前几天发布了一篇名为<Android Studio 安装.配置及第一个程序演示>的博文,有不少童鞋都认真阅读过并照步骤一步一步操作了一遍,有滴如期成功地装好了,然鹅有滴反映说这不对呀,为森 ...
- 第二篇:salt-api使用填坑指南
前言 salt-api在使用时,有些坑欲哭无泪,一路趟雷过后,总结了一趟salt-pai使用填坑指南,保君一路畅通. salt-api 安装 #本文的安装版本 2018.3.2-1.el6 yum i ...
- alert点击确定后跳转_公众号/h5 跳转到小程序填坑指南
公众号/h5 跳转到小程序填坑指南 本文介绍的是使用微信开放标签 wx-open-launch-weapp 实现微信浏览器内网页跳转到任意合法合规的小程序里,官方要求微信版本为:7.0.12 及以上, ...
- 开发工具总结(2)之全面总结Android Studio2.X的填坑指南
前言:好多 Android 开发者都在说Android Studio太坑了,老是出错,导致开发进度变慢,出错了又不知道怎么办,网上去查各种解决方案五花八门,有些可以解决问题,有些就是转来转去的写的很粗 ...
- KKBOX音乐——数据分析,用户研究与填坑指南
KKBOX音乐--数据分析,用户研究与填坑指南 导语 1 数据来源 2 数据处理 2.1 录入数据 2.2 数据类型 3 探索性分析 3.1 MySQL+Excel 3.1.1 每年3月最先注册的前1 ...
- Redmine3.3.3 搭建与不完全填坑指南
为什么80%的码农都做不了架构师?>>> Redmine3.3.3 搭建与不完全填坑指南 [TOC] 概要 Redmine3.3.3 搭建.不完全填坑指南.不联网安装.Wind ...
- NW.JS填坑指南(解决Flash插件、视频播放等故障)
目录 NW.JS填坑指南 NW.js是什么? NW.js 和 electron的选择 开发工具IDE 下载nwjs 版本信息 简单的实例 改图标 改合成exe的图标 改图标第二种方案是 播放不了视频 ...
- npm 发布包遇到的问题
引子 虽然有发布过包的经历,但没有发布过自己的包,于是就参照 npm developer guide 尝试了一下,有了下面的收获. Origin My GitHub 403 Forbidden 按照文 ...
最新文章
- 机器学习笔记八:常见“距离”归纳
- 图灵奖公布:高性能计算先驱、为超算铺平道路的Jack Dongarra获奖
- Field Service Center Customization
- 会议论文影响因子多少_中国学术期刊影响因子年报(2020版)发布|中国心血管杂志影响力指数3年连升...
- Question for the 3D printing lattice?
- 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境
- wcf:rest_REST:管理多对多关系
- 单元测试junit参数_使用Junit参数在更少的时间内编写更好的单元测试
- dataguru北京线下沙龙-第二部 《Oracle 索引优化思路--案例分享 -- 刘盛》
- 12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?
- java 异常 日志_java中的异常、断言、日志(一)
- CentOS查看CPU,内存,位数行等信息命令
- 利用Brettle.Web.NeatUpload控件对打文件进行上传(转)
- 试简述smtp通信的三个阶段的过程_POP3_SMTP_IMAP初步介绍
- IE(11)浏览器清理缓存方法
- 最新狂雨小说CmsV1.5.2漂亮的小说网站源码
- Android手机APP广告植入与产品上线
- TensorFlow 2019
- quartz建表语句
- thinkphp6教程笔记