使用npm创建一个程序库包
使用npm创建一个程序库包
程序库包是npm包的另一种形式。
1、初始化项目
PS E:\prjs\web\npminittest\mathtool> ls
PS E:\prjs\web\npminittest\mathtool> npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
PS E:\prjs\web\npminittest\mathtool> ls
2、编写程序库主体代码
module.exports = {
add: add,
minus: minus
}
function add(num1, num2) {
if (typeof num1 === "number" && typeof num2 === "number") {
return num1 + num2;
} else {
throw("arguments must be number");
}
}
function minus(num1, num2) {
if (typeof num1 === "number" && typeof num2 === "number") {
return num1 - num2;
} else {
throw("arguments must be number");
}
}
主体程序编写好之后,要认真测试一下,必须确认主体代码是完全正确的。
测试就是引入编写的模块,并运行测试用例。
3、发布程序库包。
发布编写的包视图通过npm publish命令实现的。当然,在发布之前,要npm adduser去注册一个nodejs网站的账号,npm login去登录上去,这样才可以使用npm publish发布程序库包。
发布以后,就可以通过npm install mathtool命令来安装它。
之后,在程序中可以用require('mathtool')可以加载这个包,以便在程序中使用它。
var math = require('mathtool')
var addRes = math.add(1,2);
var minusRes = math.minus(1,2);
console.log(addRes, minusRes); //输出:3,-1
4、一个另外的知识点
npm run start或者 npm run build, npm run dev等命令都是在执行package.json文件下scripts下的命令名字而已。
所以,想要增加一个命令,就是scripts字段增加就好了。
”npm run start” 或者更早版本“npm start”,nodejs会解析package.json查找scripts属性下的“start”属性对应的命令,等价于执行node app.js。
通常可以看的很多项目中有“build”,“test", "build-prod"等等应对nodejs项目构建测试的一些scripts,可以自己尝试添加更多scripts字属性验证。
5、更新程序包
程序包发布后,如果遇到bug fix和new features,则需要实现之后,重新发布。
重新发布的时候,需要注意的一点是版本号的更新。
假如,当前版本号是1.0.0,更新版本号的命令有如下三个:
npm version patch-->1.0.1: 属于小修改,不更改功能使用
npm version minor-->1.1.0: 可能添加了一些功能,不影响以前的使用。
npm version major-->2.0.0: 可能改了API,输入大范围的修改。
关于版本号,package.json文件中,有三种写法:
直接写准确的版本号:比如:1.0.0
大版本不动,有功能更新则用新版本:^1.0.0
更保守一点,只能小幅更新如bug修复等:~1.0.0
^1.0.0意为>=1.0.0 < 1.2.0,就是说版本号的第一位即主版本号不变,第二位次版本号、第三位patch号有更新的时候,都自动更新
~1.0.0意为>=1.0.0 < 1.1.0,就是说版本号中第一位主版本号不变、第二位次版本号不改,第三位patch号改了,则就自动更新
在更新程序包之后,在使用程序的代码处,要重新安装新的程序包。
在安装之前,先用npm outdated命令去检查目前项目中的包是否有更新版本:
npm outdated检查每个定义在项目package.json中包在远程仓库是否有新版本
查看清楚后,如果有的包有更新的版本,则可以使用如下命令去安装最新的版本:
npm update pkgName 可以更新这个程序库包
参考资料:
1、https://www.yisu.com/zixun/169701.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通