假设该待发布包在你本地的项目为 project1

包的本地安装测试

在发布之前往往希望在本地进行安装测试。那么需要一个其他的项目来本地安装待发布项目。

假设该其他项目为project2。假设project2和project1在同一级目录下。

1. 创建指向待测试包的符号链接包

cd project1
npm link

2. 本地安装

cd project2
npm install '../project1'

这样就只需要在其他项目中只安装一次project1,因为安装的是指向project1的符号链接包,其一直指向真实的project1。如果project1被修改,那么project2依赖的project1也是被修改后的。

3.删除

要先解除对该project1的link:

cd project1
npm unlink

再手动删除project2下的project1的符号链接包。如果不这样清除,在project1发布后,project2想要安装npm仓库中的project1就不能成功。

待弄懂此块儿link的原理及为什么要这样才能清除

包的正式发布

1. 完成git提交相关步骤

  cd project1
git add .
git commit -m "xxx"

2. 修改version && git 打标签

 npm version major/minor/patch

package.json会改变version字段值,然后也会自动加一个git的tag,同时也会增加一个commit(加上步骤1的commit,不出意外的话此时本地有2个commits等待push)。假设version 字段自动变为1.3.4。

另外,此处git如果想手动打标签可以这样(当只想发布git release却不想更新npm的时候可以这样)

git tag -a v1.3.4 -m 'my version 1.3.4'

3. git 发布到远程

最好是保持npm的版本和git release的版本一致,所以有必要先将git tag发布出来:

git push
git push origin v1.3.4 //此时自动执行ci测试

如果想要一次同时推送branch和tag:

 git push origin master --tags

参见https://www.git-scm.com/docs/git-push

https://stackoverflow.com/questions/17219102/how-to-make-git-push-include-tags-within-a-branch/17219399#17219399

The new "--follow-tags" option tells "git push" to push relevant annotated tags when pushing branches out.

This won't push all the tags, but only the ones accessible from the branch(es) HEAD(s) you are pushing.

4. npm发布

如果是该包第一次发布:

npm whoami //验证你的凭据已存储在客户端
npm publish --access=public //如果是公开包这样发布,如果不是公开的包则去掉--access=public即可

如果是该包已经发布过,现在只是更新:

npm publish

然后去npmjs.com看一下你的包是否已经发布/更新

3. 安装已发布的包

cd project2
npm install project1 --save

npm包的发布的更多相关文章

  1. npm 包的 发布 流程

    npm 包的发布流程 本文主要是针对 还未曾发布过自己的 npm 的同学,阐述一下 npm 的发布流程 熟悉的同学,可以绕道了. 首先你得有一个 自己的 npmjs.com 的账号 (没有的话,就到 ...

  2. 如何开发一个npm包并发布

    一.安装nodejs 不多说了,网上教程多得是 二.创建自己的npm包 目录结构 npm-test a.js b.js package.json 开发 为了简单便于理解,就开发一个简单地hello程序 ...

  3. Github 持续化集成 工作流 Npm包自动化发布

    Github 持续化集成 工作流 Npm包自动化发布 简介   持续集成指的是,频繁地(一天多次)将代码集成到主干. 它的好处主要有两个: 快速发现错误.每完成一点更新,就集成到主干,可以快速发现错误 ...

  4. 如何开发一个npm包并发布到npm中央仓库

    转自: https://liaolongdong.com/2019/01/24/publish-public-npm.html 如何开发一个npm包并发布到npm中央仓库需求背景:平时在项目工作中可能 ...

  5. npm包的发布和管理

    npm包管理 npm其实是Node.js的包管理工具(node package manager). 为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScrip ...

  6. 关于npm 包的发布

    注册一个npm 账号,打开命令行输入 npm add user 然后登录 npm login 发布npm 包,在你要发布的包的目录下,在创建账号后需要认证邮箱,否则无法发布,发布同一个包,每次的版本需 ...

  7. 从0开始用webpack开发antd,react组件库npm包并发布

    一.初始化一个npm包 1.新建一个文件夹(名称随意,建议和报名一致),输入命令 :npm init -y 会自动生成一个包的说明文件 package.json如下(本文以scroll-antd-ta ...

  8. npm包实现发布正式和测试版

    npm publish的時候 怎麽發測試版和正式版本呢? 通常我們一般情況下 直接 npm publish 提交自己的開發包后,在項目中 npm install @packageName 是下載下來剛 ...

  9. 创建并发布npm包

    1.npm官网创建npm账户 npm网站地址:https://www.npmjs.com/ npm网站注册地址:https://www.npmjs.com/signup 2.命令行工具登录npm np ...

随机推荐

  1. Graph_Master(连通分量_B_Trajan+完全图)

    hdu_4635 题目大意:给出一张DAG(n个点,m条边),求出能加的最大边数,使得该图无重边,无自环,非强连通. 题解:这题题面很好理解,也没有什么很难的点,主要是如何求出最大边数需要动点脑筋.首 ...

  2. Hibernate -- 一对一映射

    一对一关联指两个表之间的记录是一一对应的关系.分为两种:外键关联和主键关联. (1)外键关联 比如一家公司(Company)和它所在的地址(Address).在业务逻辑中要求一家公司只有唯一的地址,一 ...

  3. cmake手册

    cmake手册 部分转载自:http://www.cnblogs.com/coderfenghc/tag/cmake/ CMake2.8.3 主索引 命令名称 用法 描述 命令选项 生成器 命令 属性 ...

  4. scala学习手记4 - Java基本类型对应的scala类

    在Java中变量类型分为两大类:基本类型和引用类型.虽然在JDK1.5以后引入了自动装箱和自动拆箱机制,大大减少了我们在直接类型和引用类型之间的纠结,但仍有一些我们不得不考虑的问题.比如我在工作遇到的 ...

  5. Java对象序列化与反序列化

    对象序列化的目标是将对象保存在磁盘中或者在网络中进行传输.实现的机制是允许将对象转为与平台无关的二进制流. java中对象的序列化机制是将允许对象转为字节序列.这些字节序列可以使Java对象脱离程序存 ...

  6. socket 关于同一条TCP链接数据包到达顺序的问题

    转:http://blog.csdn.net/l1008610/article/details/52197602 以前作者也一直以为数据包先发的不一定先到,直到今天才意识这个问题的缺陷,数据包是不一定 ...

  7. WPF关于改变ListBoxItem的颜色的注意事项以及如何找到ListBox中的ItemsPanel

    在ListBox中碰到过几个问题,现在把它写出来: 第一个就是在ListBoxItem中当我用触发器IsSelected和IsMouseOver来设置Background和Foreground的时候, ...

  8. git一个系列教程

    https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%8 ...

  9. 关于一些对location认识的误区(转)

    转自:http://www.cnblogs.com/lidabo/p/4169396.html 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其 ...

  10. Ceph Monitor的数据管理

    转自:https://www.ustack.com/blog/ceph-monitor-2/ Monitor管理了Ceph的状态信息,维护着Ceph中各个成员的关系,这些信息都是存放在leveldb中 ...