npm workspace的基本使用

1,031 阅读2分钟

npm从7版本开始支持workspace特性, 在此之前, 我们一般使用lerna或yarn. workspace特性可以使我们很容易管理多个项目. 下面我们通过简单的demo演示workspace特性的基本使用.

一、在npm创建organization

在npm创建一个一个organization, 用来承载多个子项目. 如创建的一个名为npm-workspace-test的organization

image.png

二、初始化项目

  1. 使用 npm init -y 命令初始化一个npm项目, 添加 workspaces 字段.
  2. 在根目录下创建 packages 目录, 子项目创建在该目录下. image.png
  3. 我们将会在packages下创建三个项目, 分别是项目a、项目b和项目cil, a项目和b项目会被cli项目引用, cli项目会实现一个自定义命令行命令.
  • 3.1 使用workspace命令初始化a b cli 这几个子项目
npm init --workspace ./packages/a --workspace ./packages/b --workspace ./packages/cli

image.png

  • 3.2 给各个子项目的名字加上organization前缀, 已确保可以正确发布到npm上.

image.png

  • 3.3 创建项目a和项目b的入口文件index.mjs, 并把package.jsonmain改成index.mjs(改成.mjs后缀不是必须的, 这里改成.mjs是因为没有使用 babel 而又想使用 esmodule 的特性)

image.png

  • 3.4 因为我们要实现一个自定义的cli命令, 因此我们需要在cli项目下添加bin字段. 如图所示, 我们定义的自定义命令为 my-demo-cli, 这个命令会指向bin/index.mjs

image.png

三、编写业务代码

分别编写项目a b cli的业务代码

  1. 项目a使用chalk打印一句红色字体的话术 可以使用--workspace选项单独给a项目安装chalk依赖
npm install chalk --workspace ./packages/a

image.png

image.png 2. 项目 b 使用 ora 模拟 loading 效果

npm install ora -ws ./packages/b

image.png 3. 在项目 cli 中使用 ab

  • cli 项目安装 ab
npm i @npm-workspace-test/a -w ./packages/cli @npm-workspace-test/b -w ./packages/cli
  • 使用

image.png

  • 执行 cli.mjs, 看运行是否符合预期
node ./packages/cli/bin/cli.mjs

image.png

四、把 a b cli 这三个项目发布到npm

使用 npm publish --workspaces 命令把这三个项目发布到npm.

五、全局安装

发布成功后, 我们可以全局安装cli

npm install @npm-workspace-test/cli -g

安装成功后, 可运行 my-demo-cli 看效果

image.png

源码: github.com/Nash0828/np…
文章链接: juejin.cn/post/720173…