前言
在库的开发过程中,如果每次改动我们都将项目发布到npm或者私库上再下载进行调试未面太过于麻烦。通过npm项目中的package.json进行软链接,可以非常方便的看到我们的开发库在被项目使用后的具体情况。
node版本要求
version:16+
案例
1. 建立目录
+ wrap
|-lib //库
|-project //项目
2. 初始化
cd wrap/lib;
> wrap/lib npm run init -y
> wrap/project npm run init -y
3.修改project/package.json
{
"workspaces": [
"../lib" //路径需要和主相对应,npm i 之后会在当前项目的node_modules中生成一个lib的软连接,指向../lib
],
"keywords": [],
}
3.修改lib项目
//lib
+ |-index.js
//lib/index.js
module.exports=()=>{
console.log("test index lib")
}
// 修改lib/package.json
{
"name": "lib",
"version": "1.0.0",
"main": "index.js", // 设置lib库的主文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"description": ""
}
4.使用
// project/index.js
const test =require('lib');// 在node_modules中生成的文件名是lib所以直接引入
test();// 使用
思考
1.建立软连接后,使用时引入的包名由谁决定?
在使用时引入的包名由被引用的文件的package.json的name决定
// lib/package.json
{
"name": "lib", // 由它决定
}
2.更改包名后是否需要刷新包名?
在更改包名之后要执行
npm i刷新包名
// lib/package.json
{
"name": "lib" => "lib-name2"
}
> project
> npm i || npm i lib-name2 || npm i 其他依赖包名
// project/index.js
const test =require('lib-name2');
test();// 使用
3.更改内容后是否需要手动刷新
只更改内容无需手动刷新,
workspaces只是做了一个目录软连接,将文件夹lib软连接至project/node_modules内。而非拷贝了一个副本。
本文介绍了如何通过npm工作空间和软链接简化Node.js库的开发调试过程。在更改包名或内容后,讨论了何时需要刷新包名,并解释了软链接如何自动更新内容。此外,详细阐述了包名的决定因素和工作流程。
2038

被折叠的 条评论
为什么被折叠?



