将我们编写的代码发布到npm仓库后就可以在多个不同的项目里引入使用,不管是公司内部使用还是分享给互联网上其他用户,都很方便。
(npm插件制作的教程可以参考另一博文:传送门)
新建一个npm项目文件夹wxmp-rsa,
在里面新建src文件夹,src里新建index.js,index.js就作为我们的代码主文件,在里面简单写几行代码,
然后新建npm项目说明文档README.md,
最后目录如下:
在npm项目根目录运行终端命令:
git init .
在npm项目根目录运行终端命令,初始化生成package.json文件:
npm init --yes
package.json重点字段说明:
LICENSE即开源协议文件,这里使用MIT协议类型。
MIT License
Copyright (c) 2020 Neo Han
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
配置npm上传的文件白名单,可以指定哪些文件上传哪些不上传,
比如我这里不想直接发布src里的index.js源码,而是发布dist目录下的index.min.js(index.js压缩后的文件),按以下配置:
在package.json里,修改main字段的路径指向dist/index.min.js:
"main": "dist/index.min.js"
添加files字段来配置要上传npm的文件白名单目录:
"files": [
"dist"
]
这样dist文件夹会上传npm,而src文件夹就不会上传,想保存src源码就上传项目到git远程仓库就行,这样git仓库保存了完整项目,而npm只包含部分项目文件。
如果想把npm包和项目github地址关联起来,首先项目需要先上传到github上,然后package.json添加repository字段:
"repository": {
"type": "git",
"url": "git://github.com/neohan666/wxmp-rsa.git"
}
全部配置完后的完整package.json如下:
{
"name": "wxmp-rsa",
"version": "1.0.0",
"description": "兼容微信小程序的rsa加解密库,支持超长文本和中文字符",
"author": "neohan",
"main": "dist/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": ["wxmp", "rsa", "jsencrypt", "js", "long"],
"license": "MIT",
"files": [
"dist"
],
"repository": {
"type": "git",
"url": "git://github.com/neohan666/wxmp-rsa.git"
}
}
npm adduser
npm login
依次输入用户名和密码登录即可,登录成功后下次就不用再登录了。
如果不需要调试,可以跳过调试步骤,直接发布。
npm项目根目录运行终端命令:
npm link
运行后即将该npm包放进了本地npm缓存里,
如果要在其他项目(例如项目名叫aaa)里引用调试,只需要在在aaa里运行命令:
npm link 包名
这样就在aaa里建立了包名到npm包的链接关联,通过常规方式引入就可以测试npm包了。
如果要取消项目aaa与npm包的关联,在aaa项目下运行命令:
npm unlink 包名
为了防止本地调试npm与发布后的npm混淆冲突,在调试完成后一定记得手动取消项目关联。
在npm包项目根目录运行命令:
npm publish
运行完后,稍等片刻,在npm官网就可以搜索到发布的该npm包了。
// 配置npm全局使用淘宝镜像源
npm config set registry https://registry.npm.taobao.org
// 配置npm全局恢复官方镜像源
npm config set registry https://registry.npmjs.org
或者呢,在项目根目录新建.npmrc文件,写入以下内容即可:
registry=https://registry.npmjs.org
这样,在此项目下运行npm命令时,默认使用的仓库都是配置官方源,不影响其他项目。
如果要发布一个beta包,运行命令:
npm publish --tag beta
发布npm是用自己的账号发布的,默认只有自己能更新包,如果想要给其他人更新npm包的权限,按以下方式:
打开npm包所在页面,点击右方settings栏,然后在Invite maintainer模块,输入要加入权限的npm账号的username,然后点击invite就加入,下方Maintainers就是有权限的npm项目成员列表。
(上图是npm包页面的settings栏,拉到页面最下面就能看到。能删除的才会显示Delete项。)
(1)作废npm包,就是这里的 Deprecate package,就是给npm包打上已作废的标签,表示不再更新维护。
在npm包页面展示(示例:@babel/polyfill)以及npm i下载时会有提示。
也可以通过命令行操作:npm deprecate
具体可以查看npm官方政策:传送门
(2)删除已发布的包,这是非常危险的行为,除非你确定这个包没有其他人使用。
npm官网的删除政策这几年一直在变,我记得之前是不允许删除,现在又可以了,但有一些限制,需满足以下几点才能删除: