读完本篇文章后,你将学到"开发"、“配置”、"发布",最终拥有属于你本身的npm
包。node
经过npm init
命令能够建立初始项目,须要逐步完善一下信息:git
package name: (npmtest)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
复制代码
建立完package.json
以后,咱们就能够轰轰烈烈的写代码了。npm
开发中如何调试是一个痛点,不少人会把代码复制到node_modules
中再调试结果,其实咱们有更好的办法:"npm link",使用流程以下:json
npm link
npm link package-name
package-name
目前这种方式在yarn
中没法使用。数组
首先须要在www.npmjs.com/signup注册帐号。bash
完成以后在终端中执行npm login
,输入帐号密码以后即登陆成功。svn
这里有一点须要注意,若是设置过taobao
源,须要修改成npm
源,使用以下指令还原:post
npm config set registry http://registry.npmjs.org
复制代码
可是鉴于实际状况,咱们在taobao
和npm
源之间互相切换其实太麻烦了,比较好的解决方案就是配置package.json
中的publishConfig
字段,配置说明看下一段落。测试
此次主要介绍:ui
发布使用的配置。
"publishConfig": {
"registry": "https://registry.npmjs.org/",
"tag": "beta",
"access": "public"
}
复制代码
dist-tag
标签scoped
包,必定须要设置为public
(付费帐号除外)包的入口执行文件,一般咱们会指定为index.js
。
咱们须要控制npm
包的大小,避免安装过程当中花费太多时间。通常来讲咱们只输出编译过的内容、文档、样式等。
package.json
的files
字段的做用就是控制包含在项目中的内容,它能够设置为文件或者文件名组成的数组。
除此以外,咱们还能够在根目录或子目录下建立.npmignore
文件,写法和gitignore
一致。
有些文件是没法忽略的:
如下文件是默认忽略的:
版本号遵循语义化版本的规则,由MAJOR.MINOR.PATCH
组成,在末尾还能够加上扩展的预发布版本号信息。
版本号能够手动修改,也能够经过npm version
命令管理:
// 假设当前版本号 v1.0.0
npm version patch
// v1.0.1
npm version prepatch
// v1.0.2-0
npm version minor
// v1.1.0
npm version major
// v2.0.0
复制代码
npm version
的完整命令以下:
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
复制代码
若是咱们要生成1.0.0-alpha.1
风格的版本号,能够带上参数--preid
:
npm version prerelease --preid=alpha
复制代码
当咱们执行了npm version
以后,脚本会自动修改版本号,并在git
中建立提交和标签,若是想要禁用该行为,能够传入--no-git-tag-version
来阻止。
npm
的tag
是用于标记不一样用途的版本,一个npm
包至少会有latest
标签,咱们能够根据测试版、预览版等不一样需求定制标签。
好比咱们有一个测试版本要发布,咱们能够指定dist tag
为beta
:
npm publish --tag beta
复制代码
当咱们测试完成,准备正式发布的时候,就能够把beta
对应版本号演进到latest
上。
当一切准备就绪以后,咱们就能够进入发包的冲刺了。
npm publish
复制代码
注意!可能有人说我为何看到的只有错误,通常这个时候能够这样排查:
@somescope/somepackagename
形式若是包属于某个组织下,即@somescope/somepackagename
形式的包名,执行命令须要调整为npm publish --access public
。
通过千辛万苦以后,咱们终于发布成功了,但是若是咱们发现某个文件漏掉了,再发布一个版本也不太值得,咱们就可使用npm unpublish
命令取消24小时以内发布的包,须要注意的是unpublish
并不推荐使用。
tag
tag
npm dist-tag rm <pkg> <tag>
复制代码
本文同步发表于做者博客: 什么是npm系列:3、如何发布本身的npm包