开发一个npm包
在本地开发npm包的时候,我们可以使用npm link
命令,将npm模块链接到对应的运行项目中去,方便地对模块进行调试和测试。
创建两个文件夹:
- npm-link-module, 要开发的npm包
- npm-link-test,用来测试我们开发的包
在npm-link-module下执行npm init -y
生成一个默认的包配置文件package.json,在目录下新建index.js如下,写个简单的日期转换函数
function formateTime(date) {
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDay();
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
return year + '-' + month + '-' + day;
}
module.exports = formateTime
然后执行npm link
, 执行命令后,npm-link-module会根据package.json上的配置,被链接到全局,路径是{prefix}/lib/node_modules/<package>
,这是官方文档上的描述,我们可以使用npm config get prefix命令获取到prefix的值,找到对应的的文件夹,可以看到已经在这个目录下面生成了一个npm-link-module的快捷方式
再进入npm-link-test,执行npm init -y
生成包文件,接着执行npm link npm-link-module
可以看到在这个项目的node_modules目录下生产了一个npm-link-module的快捷方式
现在npm-link-test这个项目就可以引用这个npm-link-module
这个模块了
我们在npm-link-test的目录下新建index.js文件,内容如下
let formateTime = require('npm-link-module');
let date = new Date();
console.log(formateTime(date));
然后执行node index.js,可以看到命令行已经打印出函数的执行结果了
然后,我们修改下npm-link-module中的index.js文件的日期函数,返回结果就修改成返回斜线格式的日期
return year + '/' + month + '/' + day;
再回到npm-link-test目录下执行index.js,可以看到,返回结果已经变成了斜线的日期
由此可见,所有对npm-link-module的修改会被直接映射到npm-link-test/node_modules/npm-link-module
npm包发布
注册
先去官网注册一个账号,注意:注册的邮箱必须要验证。
或着本地注册:
npm adduser
Username:
Password:
Email:
登录
注册成功了,通过下面的命令验证
npm whoami //验证你的凭据已存储在客户端,注册成功了就会显示你的用户名
如果已经有了账号,直接使用npm login
本地登录。
根据提示输入之前注册的账号、密码。
发布包
发布npm包:npn publish
npm publish --access=public //如果是公开包这样发布,如果不是公开的包则去掉--access=public即可
更新包
npm version major/minor/patch // 此命令会自自动修改你的版本号,也可以手动修改,不用执行此命令
npm publish
npm version后面参数说明:
- patch:小变动,比如修复bug等,版本号变动 v1.0.0->v1.0.1
- minor:增加新功能,不影响现有功能,版本号变动 v1.0.0->v1.1.0
- major:破坏模块对向后的兼容性,版本号变动 v1.0.0->v2.0.0
删除包
1、删除指定的版本
npm unpublish 包名@版本号
2、删除整个包
npm unpublish 包名 --force