前言
在库的开发过程中,如果每次改动我们都将项目发布到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
刷新包名文章来源:https://www.toymoban.com/news/detail-670439.html
// 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
内。而非拷贝了一个副本。文章来源地址https://www.toymoban.com/news/detail-670439.html
到了这里,关于npm【1】package.json中workspace详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!