当前位置: 首页 > news >正文

package.json 里面出现 workspace:*,关于工作区的解释

当package.json 里面出现 workspace:*,一般用的是 MonoRepo 策略,关于这个策略,懂的就懂,不懂的也可以继续看下去,能理解 workspace:* 的

当使用 workspace 的时候,一般是我们有一个专门存放公共 包(方法,组件)的工作,供其他项目使用,而不需要在每个项目中单独 下载

下面我用例子解释一下

 先解释一下 package.json 里面有这个

"private": true,

代表这个包(项目)是私有的,不会 publish 到 npm上面,一般要出现 workspace 都会设置这个值为 true 的

接下来我用例子解释一下,由于 目前版本 的npm(7.x 及以上版本)和 Yarn(1.x 及以上版本)对 workspace 都支持,pnpm 是原生就支持的,所以下面我用 npm 来进行演示

我现在有一个文件夹 trim ,用 vscode 打开,并进行

npm init

 此时会在该目录下生成 package.json 文件,然后我们在 package.json 中添加

  "private": true,"workspaces": ["packages/*"],

这段配置代表 我们当前的项目是私有的,不会发布到 npm 上去,并且,我们把当前目录下的 packages 文件夹作为工作区

之后我们在目录下创建两个文件夹 packages 和 apps,由于一般会有多个公共的包,所以再在 packages 创建一个文件夹叫 log,然后进入到 log 文件夹,也进行初始化

cd .\packages\log\
npm init

之后把 log 里面的 package.json 的 name 改为 @log/trim,此时文件的目录是这个样子的

然后再在 log 目录下建一个 index.js 文件,里面写一个公共的方法

export function trimLog(str){return `这是你要内容${str}`
}

此时我们切换到根目录 trim 进行

npm install

可以看到 npm 自动把我们工作区的包生成了一个 node_modules

接下来测试能否使用

我们进入到 apps 目录进行创建 vue 项目,然后在安装相关依赖

cd .\apps\
npm create vite
cd 你的vue项目目录
npm i 

我们把 vue 项目里面的 App.vue 代码改为

<script setup>
import { trimLog } from '@log/trim'
const handleClick = () => {console.log(trimLog('点击了'))
}
</script><template><div><div @click="handleClick">点击我试试</div></div>
</template><style scoped></style>

此时,vue 的 App.vue 和 vue 里面的 package.json 是这样的

然后我们

npm run dev

启动 vue 项目,

可以看到 @log/trim 的方法是可用的,说明公共的包配置成功

这里我说明一下,这里没有专门配置到哪个工作区,vue 项目寻找的时候,应该是当前目录没有找到,然后又跳到父级目录去找,之后找到的,关于 workspace 还有一些配置,大家自己去研究了,这里做一个简单的演示

相关文章:

  • 文献总结:NIPS2023——车路协同自动驾驶感知中的时间对齐(FFNet)
  • 时序逻辑电路——序列检测器
  • 如何提高单元测试的覆盖率
  • PC主板及CPU ID 信息、笔记本电脑唯一 MAC地址获取
  • 目标检测综述
  • 深度解析生成对抗网络:原理、应用与未来趋势
  • 三维点拟合平面ransac c++
  • MCP 协议:AI 世界的 “USB-C 接口”,开启智能交互新时代
  • 管家婆财贸ERP BB095.销售单草稿自动填充组合品明细
  • Python 的 pip 命令详解,涵盖常用操作和高级用法
  • Vue 3.0 Composition API 与 Vue 2.x Options API 的区别
  • (论文阅读)RNNoise 基于递归神经网络的噪声抑制库
  • 频率合成方法及其实现原理
  • 嵌入式linux架构理解(宏观理解)6ull学习心得---从架构理解到自写程序运行及自写程序开机自启动
  • 几个常用的快速处理服务器命令和故障排查
  • 每天学一个 Linux 命令(20):find
  • MySQL Limit 分页查询性能问题及优化方案
  • 配电监控DLT645电表数据 转EthernetIP项目案例
  • 2024年RIS SCI2区:自适应天鹰算法AAO,深度解析+性能实测
  • 如何开一个线上故障复盘会
  • 胸外科专家查出肺多发结节,说了一个可怕的事实……
  • 庄语乐︱宋代历史是被“塑造”出来的吗?
  • 朝鲜新型驱逐舰“崔贤”号进行多项武器试验
  • “乐购浦东”消费券明起发放,多个商家同期推出折扣促销活动
  • 电话费被私改成48元套餐长达数年,投诉后移动公司退补600元话费
  • 10台核电新机组获核准,上海核电厂商独揽超500亿元订单