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 发布包填坑指南相关推荐

  1. 开发工具总结(4)之Android Studio3.0填坑指南

    序言 Android Studio 3.0 上篇讲了: 全面总结Android Studio2.X的填坑指南 这篇讲一下AS3.0的坑.. 作为这个世界上走在最前沿的生物"猿",怎 ...

  2. Android Studio 填坑指南

    前几天发布了一篇名为<Android Studio 安装.配置及第一个程序演示>的博文,有不少童鞋都认真阅读过并照步骤一步一步操作了一遍,有滴如期成功地装好了,然鹅有滴反映说这不对呀,为森 ...

  3. 第二篇:salt-api使用填坑指南

    前言 salt-api在使用时,有些坑欲哭无泪,一路趟雷过后,总结了一趟salt-pai使用填坑指南,保君一路畅通. salt-api 安装 #本文的安装版本 2018.3.2-1.el6 yum i ...

  4. alert点击确定后跳转_公众号/h5 跳转到小程序填坑指南

    公众号/h5 跳转到小程序填坑指南 本文介绍的是使用微信开放标签 wx-open-launch-weapp 实现微信浏览器内网页跳转到任意合法合规的小程序里,官方要求微信版本为:7.0.12 及以上, ...

  5. 开发工具总结(2)之全面总结Android Studio2.X的填坑指南

    前言:好多 Android 开发者都在说Android Studio太坑了,老是出错,导致开发进度变慢,出错了又不知道怎么办,网上去查各种解决方案五花八门,有些可以解决问题,有些就是转来转去的写的很粗 ...

  6. KKBOX音乐——数据分析,用户研究与填坑指南

    KKBOX音乐--数据分析,用户研究与填坑指南 导语 1 数据来源 2 数据处理 2.1 录入数据 2.2 数据类型 3 探索性分析 3.1 MySQL+Excel 3.1.1 每年3月最先注册的前1 ...

  7. Redmine3.3.3 搭建与不完全填坑指南

    为什么80%的码农都做不了架构师?>>>    Redmine3.3.3 搭建与不完全填坑指南 [TOC] 概要 Redmine3.3.3 搭建.不完全填坑指南.不联网安装.Wind ...

  8. NW.JS填坑指南(解决Flash插件、视频播放等故障)

    目录 NW.JS填坑指南 NW.js是什么? NW.js 和 electron的选择 开发工具IDE 下载nwjs 版本信息 简单的实例 改图标 改合成exe的图标 改图标第二种方案是 播放不了视频 ...

  9. npm 发布包遇到的问题

    引子 虽然有发布过包的经历,但没有发布过自己的包,于是就参照 npm developer guide 尝试了一下,有了下面的收获. Origin My GitHub 403 Forbidden 按照文 ...

最新文章

  1. 机器学习笔记八:常见“距离”归纳
  2. 图灵奖公布:高性能计算先驱、为超算铺平道路的Jack Dongarra获奖
  3. Field Service Center Customization
  4. 会议论文影响因子多少_中国学术期刊影响因子年报(2020版)发布|中国心血管杂志影响力指数3年连升...
  5. Question for the 3D printing lattice?
  6. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境
  7. wcf:rest_REST:管理多对多关系
  8. 单元测试junit参数_使用Junit参数在更少的时间内编写更好的单元测试
  9. dataguru北京线下沙龙-第二部 《Oracle 索引优化思路--案例分享 -- 刘盛》
  10. 12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?
  11. java 异常 日志_java中的异常、断言、日志(一)
  12. CentOS查看CPU,内存,位数行等信息命令
  13. 利用Brettle.Web.NeatUpload控件对打文件进行上传(转)
  14. 试简述smtp通信的三个阶段的过程_POP3_SMTP_IMAP初步介绍
  15. IE(11)浏览器清理缓存方法
  16. 最新狂雨小说CmsV1.5.2漂亮的小说网站源码
  17. Android手机APP广告植入与产品上线
  18. TensorFlow 2019
  19. quartz建表语句
  20. thinkphp6教程笔记

热门文章

  1. 《NoSQL精粹》思维导图读书笔记
  2. 信息系统管理工程师考前复习笔记三
  3. 新手XP下硬盘安装ubuntu10.10全程解析
  4. (转) Weblogic 12c 集群部署和session复制
  5. Java网络编程之简单UDP通信
  6. 分布式架构中异步的使用场景
  7. Kali渗透测试——快速查找Metasploit的模块
  8. 雪城大学信息安全讲义 3.3 提升 Set-UID 程序的安全性
  9. Proc-fs 编程
  10. IE6下绝对定位的DIV被相对定位的DIV挡住的问题