假设该待发布包在你本地的项目为 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. python数据可视化(持续更新)

    1.折线图 import numpy as np import matplotlib.pyplot as plt input_values = [1, 2, 3, 4, 5] s = [1, 4, 9 ...

  2. PAT1051. Pop Sequence (25)

    #include <iostream> #include <stack> using namespace std; int sizeMax,n,k; stack<int& ...

  3. 自己用java实现飞鸽传书 1 - 实现socket通信

    第一步: 建立服务端客户端,实现端到端通信.因为要传递文件,信号量较大,故使用TCP/IP协议. 服务端和客户端都要建立socket,而后通过socket进行通信.目前只实现服务端到客户端的单向通信. ...

  4. python学习笔记(接口自动化框架 V2.0)

    这个是根据上次框架版本进行的优化 用python获取excel文件中测试用例数据 通过requets测试接口.并使用正则表达式验证响应信息内容 生成xml文件测试报告 版本更新内容: 1. 整理了Cr ...

  5. ionic2常见问题——修改应用图标及添加启动画面(官方命令行工具自动生成)

    1.项目根目录->resources 分别存放应用图标及添加启动画面,替换成自己的图案既可. 2.这样在命令行中重新运行ionic resources ,就能看到应用图标和名字已经被替换了: 3 ...

  6. Win7系统搭建WiFi热点详细攻略

    (转自:http://blog.csdn.net/gisredevelopment/article/details/16113889) 一.如果你之前没有在笔记本上搭建过WiFi,那么恭喜你,你的笔记 ...

  7. LeetCode OJ:Word Search(单词查找)

    Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...

  8. 一步一步写jQuery插件

    转载自:http://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquer ...

  9. 背景色与WM_ERASEBKGND

    1.背景模式 SetBkMode(TRANSPARENT/OPACITY) 用来反应文字,图形与窗口背景交互混合模式.透明则表示文字背景与窗口背景之间透明,互不干扰. 2.背景颜色 SetBkColo ...

  10. Java与数据库数据类型对应表

    Java中的数据类型和SQL中的数据类型有很多不一样,需要仔细区分,不然易在开发中造成莫名的错误. Java数据类型 hibernate数据类型 标准SQL数据类型(PS:对于不同的DB可能有所差异) ...