首页/ 学科题库/ npm/ Monorepo与工作区管理专题
npm 专题精讲

Monorepo与工作区管理专题

1 篇文章 13 道配套习题

Monorepo与工作区管理专题

专题说明

本专题讲解使用npm workspaces管理Monorepo多包项目,包括工作区配置、内部依赖管理、共享依赖提升以及批量脚本执行。

学习目标

  1. 掌握workspaces字段定义多包项目结构
  2. 理解工作区内部依赖管理与共享依赖版本同步
  3. 学会在所有或指定工作区中批量运行脚本

学习内容

  • workspaces配置:多包项目结构定义、路径配置
  • 工作区依赖管理:内部依赖、共享依赖、版本同步
  • 脚本批量执行:--workspace参数、选择性执行

学习建议

  1. Monorepo适合多个关联包同时开发的场景
  2. 共享依赖会被提升到根node_modules减少重复安装
  3. 使用npm run -ws在所有工作区同时执行脚本

配套习题(13 题)

参考答案在文末
判断题
1
判断题

在workspace依赖中使用"workspace:*"协议,发布包时NPM会自动将其替换为实际发布的版本号。

A

对

B

错

2
判断题

在npm workspaces中,当工作区pkg-a在dependencies中声明了对同monorepo内工作区pkg-b的依赖时,npm会将pkg-b的发布版本从registry下载到pkg-a的node_modules中,而非使用符号链接指向pkg-b的本地源码。

A

对

B

错

3
判断题

在package.json中配置"workspaces": ["packages/*"],NPM会将packages目录下所有包含package.json的子目录识别为工作区包。

A

对

B

错

4
判断题

在npm workspaces中,使用npm run build -ws执行所有工作区包的build脚本时,npm会按照依赖拓扑顺序串行执行,即被依赖的包先构建,依赖它的包后构建。

A

对

B

错

单选题
5
单选题

在npm workspaces中,以下哪个命令可以仅对包含test脚本的工作区包执行测试,跳过没有test脚本的包?

A

npm test -ws --ignore-missing

B

npm test -ws --if-present

C

npm test -ws --silent

D

npm test -ws --skip-missing

6
单选题

在启用了workspaces的项目中执行npm install,NPM对工作区内部依赖的处理方式是?

A

从NPM注册表下载并安装

B

在node_modules中创建指向本地包的符号链接

C

复制本地包代码到node_modules

D

忽略工作区内部依赖

7
单选题

为特定工作区包pkg-a安装lodash依赖的正确命令是?

A

npm install lodash -p pkg-a

B

npm install lodash -w pkg-a

C

npm install lodash --workspace=pkg-a

D

npm install lodash @pkg-a

多选题
8
多选题

关于npm workspaces的批量脚本执行,以下哪些说法是正确的?

A

使用npm run build -w package-a -w package-b可以为指定的多个工作区包执行build脚本

B

npm run build -ws会并行执行所有工作区包的build脚本

C

使用--parallel参数可以强制所有工作区包的脚本并行执行,忽略依赖拓扑顺序

D

npm run test -ws --if-present会跳过没有test脚本的工作区包

E

在根package.json的scripts中可以使用"workspaces:*"语法来引用所有工作区的脚本

F

npm run build -ws的执行日志会显示每个工作区包的脚本输出前缀,便于区分来源

9
多选题

关于npm workspaces配置,以下说法正确的有?

A

workspaces字段可以放在根package.json中

B

支持使用通配符匹配多个子包

C

工作区包之间不能互相依赖

D

可以通过npm init -w创建子包

10
多选题

关于npm workspaces依赖管理的说法,以下哪些是正确的?

A

多个工作区共享的依赖会被提升到根node_modules

B

工作区私有依赖只安装在该工作区目录下

C

npm dedpe可以检测并合并重复依赖

D

发布时workspace协议引用会保持不变

填空题
11
填空题

在npm workspaces中,根目录package.json的字段用于声明工作区路径。执行npm install时,npm会为每个工作区包在根目录的node_modules中创建(symlink),使得工作区之间可以直接通过包名互相引用。若需在指定路径创建新的工作区包,可以使用命令。

12
填空题

在npm workspaces中,若要在所有工作区中批量执行lint脚本,需使用命令npm run lint (或简写为)。如果某个工作区没有lint脚本而不希望报错退出,可以额外添加参数来跳过缺失脚本的工作区。

13
填空题

查看项目中所有工作区包及其依赖的命令是;将依赖安装到指定工作区pkg-a的参数是

参考答案
1.正确 2.错误 3.正确 4.正确 5.B 6.B 7.B 8.A;C;D;F 9.A;B;D 10.A;B;C 11.workspaces;符号链接;npm init -w <workspace-path> 12.--workspaces;-ws;--if-present 13.npm ls -a --depth=0;-w pkg-a
想在手机上刷这套专题的真题?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别二维码,即可解锁本专题全部配套练习与错题本。
了解产品 App
下一个专题 → NPM基础概念与环境配置专题