Nodejs Workspaces 实战

简介: Nodejs 在每一次执行安装包的时候,都会安装到当前工程目录的 node_modules 文件夹下,但是当包依赖过多,多个工程依赖同一个包的时候,npm_modules 文件夹已经成为了一个磁盘空间黑洞。

1. Workspaces 介绍

Nodejs 的依赖包安装,几乎所有人都知道是执行 npm install 完了后,就会在目录下创建 node_modules 文件夹,然后所有的包都会放到这个目录下,但是如果我们多个工程都依赖同一个包的时候,就会导致,每个工程都要安装一次,浪费磁盘空间;比如如果我们是作为前端开发,经常使用 Vue 开发工程,然后我们的工程使用的是 vitejs 作为构建工具,如果我们有2个工程,我们的磁盘上就会安装 vitejsvue 及其依赖两次。

为了解决这样的情况,yarnpnpm 出了工作区(Workspaces)模式,就是将依赖集中安装在一个位置,相同的依赖也只会安装一次。同时 npm7.0 开始,也开始支持 Workspaces 模式了。

关于工作区的介绍请参考:Workspaces

2. Workspaces 使用

下面介绍 Workspaces 基本使用:

  1. 首先新建一个目录

需要新建一个目录作为 Workspaces 根目录,例如:vite-pros

  1. 新建 package.json 文件

在目录下新建一个 package.json 文件,内容填充如下:

{
  "name": "vite-pros",
  "description": "使用 vite 作为构建工具的前端项目",
  "private": true,
  "workspaces": [
    "packages/*"
  ]
}

其中 private: true 是必需的!工作区并不意味着要发布,所以增加了这个安全措施,以确保没有任何东西可以意外暴露它们。workspaces 字段是包含每个工作区的路径的数组。由于追踪每个路径可能很乏味,因此该字段也接受glob模式!

  1. 新建 packages 目录
  2. packages 目录下就是我们的正常的工程了。

3. npmyarnWorkspaces 命令介绍

  1. 安装依赖

      [yarn|npm] install
  2. 为某一个子项目安装依赖

      // npm
      npm install vue -w pro1
      // yarn
      yarn workspace pro1 add -D react

    pro1 就是 packages 目录下对应的 pro1 目录,并且 pro1 目录的 package.json 文件的 name 就是 pro1name: pro1

    这里可以依赖同一个工作区下的其它工程,以 yarn 为例,如果依赖同工作区下的其它工程, package.jsondependencies 就会发生改变,例如: "ph-utils": "workspace:packages/utils""ph-terminal-spinner": "workspace:packages/terminal-spinner" 这就表明依赖的是同一个工作区的其它工程。
    这样的可能有人就会有疑问了,如果 package.json 改变了后,上传后会怎么样呢?这个就是下面的命令了。
  3. 发布

      // npm
      npm publish
      // yarn 发布的时候,会自动替换本地依赖的版本
      yarn workspace pro1 npm publish
    yarn 发布的时候,如果会有本地有本地依赖如: "ph-utils": "workspace:packages/utils" 则会被替换为 "ph-utils": "0.0.1" 其中 0.0.1 就是本地 ph-utils 的版本。

关于更多的 yarn workspaces 的命令和介绍请参考:yarn workspace命令yarn workspace介绍

关于更多的 npm workspaces 的介绍:npm workspaces

其实关于 workspaces 还有两个工具可以用:pnpm workspacesLerna

pnpm 和 npm、yarn 一样都是依赖包管理工具,是作为 npm、yarn 的替代使用的。而 Lerna 不一样它可以配合依赖包工具来使用,来实现更强大的管理。
相关文章
|
6月前
|
数据采集 并行计算 JavaScript
实战指南:在 Node.js 中利用多线程提升性能
在 Node.js 的世界中,多线程技术一直是一个受到广泛关注的领域。最初,Node.js 设计为单线程模式。随着技术发展,Node.js 引入了多线程支持,进而利用多核处理器的强大性能,提升了应用性能。接下来的内容将深入探讨 Node.js 如何实现多线程,以及在何种场合应该采用这种技术。
|
JSON 前端开发 JavaScript
前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(一)
前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(一)
591 0
|
5月前
|
JavaScript 网络协议 前端开发
【Nodejs】WebSocket 全面解析+实战演练——(Nodejs实现简易聊天室)
【Nodejs】WebSocket 全面解析+实战演练——(Nodejs实现简易聊天室)
594 0
|
3月前
|
存储 缓存 JavaScript
构建高效后端服务:Node.js与Express框架的实战应用
【8月更文挑战第2天】在数字化时代的浪潮中,后端服务的构建成为了软件开发的核心。本文将深入探讨如何利用Node.js和Express框架搭建一个高效、可扩展的后端服务。我们将通过实际代码示例,展示从零开始创建一个RESTful API的全过程,包括路由设置、中间件使用以及数据库连接等关键步骤。此外,文章还将触及性能优化和安全性考量,旨在为读者提供一套完整的后端开发解决方案。让我们一同走进Node.js和Express的世界,探索它们如何助力现代Web应用的开发。
|
3月前
|
大数据 数据处理 分布式计算
JSF 逆袭大数据江湖!看前端框架如何挑战数据处理极限?揭秘这场技术与勇气的较量!
【8月更文挑战第31天】在信息爆炸时代,大数据已成为企业和政府决策的关键。JavaServer Faces(JSF)作为标准的 Java Web 框架,如何与大数据技术结合,高效处理大规模数据集?本文探讨大数据的挑战与机遇,介绍 JSF 与 Hadoop、Apache Spark 等技术的融合,展示其实现高效数据存储和处理的潜力,并提供示例代码,助您构建强大的大数据系统。
49 0
|
4月前
|
JavaScript 应用服务中间件 API
Node.js搭建REST API实战:从基础到部署
【7月更文挑战第18天】通过以上步骤,你可以将你的Node.js REST API从开发环境顺利迁移到生产环境,并利用各种工具和技术来确保应用的稳定性、安全性和可扩展性。
|
6月前
|
JavaScript 前端开发 开发工具
【JavaScript 技术专栏】Node.js 基础与实战
【4月更文挑战第30天】本文介绍了Node.js的基础及应用,包括事件驱动的非阻塞I/O、单线程模型和模块系统。内容涵盖Node.js的安装配置、核心模块(如http、fs、path)及实战应用,如Web服务器、文件操作和实时通信。文章还讨论了Node.js的优劣势、与其他技术的结合,并通过案例分析展示项目实施流程。总结来说,Node.js是高效后端开发工具,适合构建高并发应用,其广阔的应用前景值得开发者探索。
68 1
|
6月前
|
安全 关系型数据库 MySQL
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
112 3
|
6月前
|
编解码 前端开发 JavaScript
node实战——koa实现文件下载和图片/pdf/视频预览(node后端储备知识)
node实战——koa实现文件下载和图片/pdf/视频预览(node后端储备知识)
310 1
|
6月前
|
存储 缓存 NoSQL
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
90 0
下一篇
无影云桌面