发布到NPMJS
npm publish
- 初始化项目
- 创建npm账号
初始化项目
name
包的名称
version
包的版本,格式通常是major.minor.patch,即类似1.0.1
在运行npm version时,会同步修改这个值
main
包的加载入口。
我们这里讨论的前提是发布到NPMJS,也就是说,nodejs的模块加载器会根据这里的信息来加载模块。
路径是以当前package.json文件为基准的相对路径。例如,如果你直接以根目录的index.js为包的加载入口,可以写成./index.js或者index.js。
如果你用webpack来进行打包,那么打包后文件的输出地址必须与你在main属性上的地址保持一致。
但webpack打包并不是必须的,你只需要保证包的加载入口的路径正确即可。
同理,如果你打算发布的包使用typescript编写的,你也需要保证编译后的输出路径与包的加载入口的路径一致。
如果你的typescript包的目标项目仍然是typescript项目,你甚至不需要对其进行编译就可以直接发布。
description
包的描述
test command
包的测试入口。按回车键,跳过设置。
git repository
包的repository地址
如果当前目录已经在git的本地repository内,那么系统会自动为你填充git repository的地址,除此之外,系统还会自动为你填充以下值:
bugs
homepage
因此,建议先将项目文件夹从git上clone到本地,在运行npm init来初始化项目。
keywords
包的关键字,会显示在github的列表上。
author
作者名称,一般填写邮箱地址。
license
默认是ISC,按回车键跳过设置

创建npm账号
npm adduser
在当前工作目录下运行该命令,用于创建npm账号,如果你已经有一个npm账号,请忽略。
此外,如果你此前为了加速npm的下载速度而修改了npm的下载源,那么你得将npm的源改回去。
npm config set registry https://registry.npmjs.org/用户创建成果后,要求你验证邮箱。
npm login
在当前工作目录下运行该命令,登录到npmjs,为发布作准备。
- npm version
- npm publish
npm version
具体命令为npm version 1.0.1该命令执行时,会自动修改package.json中的version属性,将值改为1.0.1。另外,它还会commit你本地的修改,并在本地的git repository上打上v1.0.1的tag。我本人是很认同这种做法的。每一个版本都应该在git repository上留下对应的标记,这样做也方便日后查看这个版本到底修改了什么。当然,如果你不想在设置版本时修改git repository,也可以将其关闭掉(在命令行上加上--no-git-tag-version)。在命令上加上-m 参数就可以为这次发布加上comments,同时将comments保存到git的tag上。例如:npm version 1.0.1 -m "fix a .... bug"你可能会发现,每次发布时,我都要先看之前的版本号是多少,然后在决定新的版本号,这是一件很麻烦的事情。因此npm version还为我们提供了更加方便的options:patch, minor, major, prepatch, preminor, premajor, prereleasepre是预发版本版本的格式为:major.minor.patch也就是说,假设当前版本是1.0.2运行npm version patch,版本号变成1.0.3运行npm version minor,版本号变成1.1.0运行npm version major,版本号编程2.0.0当加上pre前缀时,版本号的变化同上,但是后面会加上预发版本号,从0开始。假设当前版本号是1.0.2运行npm version prepatch,版本号变成1.0.3-0。要递增预发版本号,则使用prerelease。假设当前版本号是1.0.3-0。运行npm version prerelease,版本号编程1.0.3-1。因此,你基本上可以从版本号的命名管理中解脱出来了。
npm publish
需要注意的是,发布时会将当前目录下的所有文件(包含.git)文件都发布上去。这肯定不是我们想要的结果。因此,你可以将不用发布到npmjs上的文件添加到根目录下的.npmignore文件中。另外,你在README.md文件中添加的内容,除了会显示在你的github的项目首页,同时也会显示在npmjs package的首页。因此,你除了精心准备你的代码外,还有必要准备一下README.md中的内容。
发布到NPMJS的更多相关文章
- 如何把自己的代码发布到npmjs(npm publish)
来源: https://www.cnblogs.com/calamus/p/8384318.html
- 基于node的前端组件包发布至nexus和npmjs
目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 建立组件的导出模块... 1 2.2. 建立组件入口文件... 1 2.3. 配置“ng-package.json”文件.. ...
- gitbook 入门教程之从零到壹发布自己的插件
什么是插件 Gitbook 插件是扩展 Gitbook 功能的最佳方式,如果 Gitbook 没有想要的功能或者说网络上也没有现成的解决方案时,那么只剩下自食其力这条道路,让我们一起来自力更生开发插件 ...
- 前端组件用 Scope 发布 npm 包的方法
1.引言 多人.多组织或多组件发布 npm 包到同一个仓库时,可能出现命名冲突问题. 为了解决这个问题,npm 引入了“scope”(范围)概念. 在 Angular 项目中,我们通常可以看到“@an ...
- 05.ElementUI源码学习:项目发布配置(github pages&npm package)
0x00.前言 书接上文.项目第一个组件已经封装好,说明文档也已编写好.下面需要将说明文档发布到外网上,以此来展示和推广项目,使用 Github Pages功能实现.同时将组件发布之 npm 上,方便 ...
- Npm包的开发
个人开发包的目录结构 ├── coverage //istanbul测试覆盖率生成的文件 ├── index.js //入口文件 ├── introduce.md //说明文件 ├── lib │ ...
- jQuery2.x源码解析(构建篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 笔者阅读了园友艾伦 Aaron的系列博客< ...
- nodejs简单层级结构配置文件
在NodeJS中使用配置文件,有几种比较不错的方案:第一种:文件格式使用json是毋容置疑的好方案.格式标准,易于理解,文件内容读取到内存之后,使用JSON的标准分析函数即可得到配置项.第二种:将配置 ...
- 记npm包开发全过程
概述 为什么开发npm包? 如何开发? 如何写单元测试? package.json 如何发布模块? 如何使用? 为什么开发npm模块? NPM的全称是Node Package Manager,是一个N ...
随机推荐
- Liveness 探测 - 每天5分钟玩转 Docker 容器技术(143)
Liveness 探测让用户可以自定义判断容器是否健康的条件.如果探测失败,Kubernetes 就会重启容器. 还是举例说明,创建如下 Pod: 启动进程首先创建文件 /tmp/healthy,30 ...
- C语言编程之道--读书笔记
C语言语法 const int nListNum =sizeof(aPrimeList)/sizeof(unsigned);//计算素数表里元素的个数 1:#define INM_MAX 32767 ...
- SQL Server The target database ('db') is in an availability group and currently does not allow read only connections. For more information about application intent, see SQL Server Books Online.
一.问题概述 在错误日志中看到非常多的alwayson群集只读连接错误,错误信息的描述为“目标数据库位于可用性组,当前不允许通过read only连接”.错误日志如下: 当前的业务系统使用监听ip对数 ...
- struts2和spring mvc的区别
在项目中使用struts2和spring mvc为了实现后台的业务代码和前台数据之间的传递,现在基本上不会有用struts2的了,几次面试问的最多的关于struts2的问题就是struts2和spri ...
- 斗地主案例(利用集合/增强for等技术)
斗地主案例(利用集合/增强for等技术) package Task10; import java.util.ArrayList; import java.util.Collections; publi ...
- es6使用技巧
##1.通过参数默认值实现强制参数 ES6 的参数默认值只有在真正使用时才会求值.这可以让你强制确保提供参数: /** * Called if a parameter is missing and * ...
- es6学习笔记--promise对象
Promise对象是为了简化异步编程.解决回调地狱情况 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可 ...
- 基于hi-nginx的web开发(python篇)——起步
hi-nginx不仅让python web 应用跑得飞快,而且让相关开发变得简单敏捷. 关于hi-nginx的安装,请参考:https://www.cnblogs.com/hi-nginx/p/862 ...
- 插入排序—直接插入排序(Straight Insertion Sort)
基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插插入到已入,直至整个序列有序为止. 要点: ...
- Android Intent 基本使用及对象构成
Intent基本使用 Intent可以理解为不同组件通信的媒介或者信使. Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcast. 具体方法如下表 ...