Lint 与包管理

共 52 题
#

1. Prettier 3 的配置文件与 ESLint 的边界(格式化与代码质量)

A Prettier 负责统一格式化,ESLint 负责代码质量,两者边界通过 eslint-config-prettier 关闭冲突的风格规则来协调 ✓ 正确答案
B ESLint 负责所有代码风格,Prettier 负责语法检查
C Prettier 可以完全替代 ESLint
D ESLint 与 Prettier 对同一代码的修复总是兼容
#

2. Stylelint 在 CSS/SCSS/Less 代码规范与 Stylistic 规则的工程实践

A Stylelint 只能检查 CSS,不能处理 SCSS
B Stylelint 通过 customSyntax 支持 SCSS/Less,规则分错误、可维护性与风格三类,风格规则与 Prettier 用 config-prettier 协调分工 ✓ 正确答案
C Stylelint 与 Prettier 必须同时启用全部规则
D Stylelint 不支持自动修复
#

3. ESLint 的自定义规则(RuleTester)在团队规范的工程应用

A 自定义规则无法自动修复
B RuleTester 只用于测试 Prettier 配置
C 自定义规则不需要 meta 声明
D 自定义规则通过 create 函数遍历 AST 报告问题,RuleTester 用 valid/invalid 用例验证规则与修复输出,团队规范可规则化发布为内部插件 ✓ 正确答案
#

4. ESLint no-unused-vars 与 TypeScript 的协作配置

A TS 项目应继续使用原生的 no-unused-vars
B TS 项目应改用 @typescript-eslint/no-unused-vars 以理解类型语义,并与 tsc 的 noUnusedLocals 明确分工避免双轨差异 ✓ 正确答案
C TS 的未使用变量无法被检查
D type import 永远会被误报为未使用
#

5. Prettier 与 ESLint 的冲突解决(eslint-config-prettier)

A eslint-config-prettier 关闭 ESLint 中与 Prettier 冲突的排版规则(置于 extends 最后),让 Prettier 独占格式化、ESLint 专注质量 ✓ 正确答案
B eslint-config-prettier 会把 ESLint 所有规则都关闭
C 冲突时以 ESLint 的修复为准
D eslint-config-prettier 只影响 React 项目
#

6. ESLint 的 autofix 在 CI 与保存时的工程策略

A 所有 ESLint 规则都支持自动修复
B CI 中应直接 --fix 后静默提交
C 开发期在保存时执行 --fix 即时消除可修复问题,CI 作为门禁校验不可修复问题,两者配合并治理豁免流程 ✓ 正确答案
D autofix 会破坏代码语义,只能手动修复
#

7. lint-staged 在大文件 lint 的性能取舍(增量 vs 全量)

A lint-staged 只处理暂存变更文件,换取提交速度,但存在盲区,应用增量快筛与 CI 全量校验分层治理 ✓ 正确答案
B lint-staged 与 git 无关
C 增量 lint 能检查所有历史问题
D lint-staged 会 lint 全仓库所有文件
#

8. npm/pnpm/yarn/bun 在 lockfile、workspaces、Phantom dep 治理的取舍

A npm/yarn 传统模式存在幽灵依赖风险,pnpm 用严格符号链接布局与 workspace:* 协议治理,选型应综合 lockfile、workspaces 与依赖布局 ✓ 正确答案
B 所有包管理器的 lockfile 格式都相同
C pnpm 不支持 monorepo
D 幽灵依赖只影响性能,不影响正确性
#

9. pnpm store 与 hard links 节省磁盘空间在大型 monorepo 的工程价值

A pnpm 每个项目都完整复制一份依赖
B hard links 在任何文件系统上都可用
C pnpm 用内容寻址 store 加硬链接实现全局去重,monorepo 与 CI 中显著节省磁盘与安装时间,但需注意跨盘失效与 store 清理 ✓ 正确答案
D pnpm store 无法被 CI 缓存
#

10. npm overrides/resolutions 与 yarn resolutions 在依赖冲突修复

A overrides 替换的版本必然与依赖兼容
B overrides 只能用于直接依赖
C overrides/resolutions 强制指定传递依赖版本,用于漏洞修复与冲突统一,但可能引入兼容性问题,应作为最后手段并附带原因与复审 ✓ 正确答案
D 使用 overrides 后无需再跑依赖审计
#

11. oxlint(Oxc)作为 ESLint 替代品在大型 monorepo 的工程取舍

A oxlint 覆盖 ESLint 全部规则
B oxlint 不支持任何 ESLint 配置
C oxlint 无法在 monorepo 中使用
D oxlint 以 Rust 性能做全量快速 lint,但规则覆盖与类型感知弱于 typescript-eslint,适合与 ESLint 分层并存 ✓ 正确答案
#

12. pnpm workspace 与 pnpm-workspace.yaml 在 Monorepo 的依赖提升与幽灵依赖治理

A pnpm 无法治理幽灵依赖
B pnpm 会把所有传递依赖提升到根 node_modules
C workspace:* 协议会安装 registry 上的包
D pnpm-workspace.yaml 声明工作区包,严格符号链接布局根治幽灵依赖,公共工具链依赖用 hoist-pattern 白名单放行 ✓ 正确答案
#

13. npm 11 与 Yarn 4 Berry 的能力对比

A npm 11 与 Yarn 4 的安装模型完全相同
B npm 11 不支持 workspaces
C Yarn 4 不支持 monorepo
D Yarn 4 Berry 的 PnP 模型用运行时解析器替代 node_modules,确定性高且省磁盘,但部分工具需适配;npm 11 以 node_modules 兼容性见长 ✓ 正确答案
#

14. pnpm catalog 的依赖版本统一 在大型项目构建链的工程价值

A catalog: 协议会为每个包生成独立版本
B catalog 与 workspace:* 是同一机制
C 使用 catalog 后无需 lockfile
D pnpm catalog 在根配置集中定义依赖版本,多包用 catalog: 引用,实现版本单点治理与全仓一致 ✓ 正确答案
#

15. npm/pnpm audit 在 CI 的门禁策略与误报处理,severity 阈值、白名单与例外审批流程

A 任何级别的漏洞都应阻塞 CI
B audit 门禁按 severity 阈值阻塞并分层扫描,误报经可达性评估降级,白名单带到期时间并走审批流程 ✓ 正确答案
C audit 无法识别传递依赖漏洞
D 白名单可以永久生效
#

16. typescript-eslint 的 type-aware linting,parserOptions.projectService 相比 project 配置的工程优势,以及类型化规则(如 no-floating-promises)在捕获类型级问题的价值?

A 类型化规则只检查语法错误
B type-aware linting 用 TS 类型信息捕获 no-floating-promises 等语义问题,projectService 自动发现项目配置,比显式 project 清单更适合大型 monorepo ✓ 正确答案
C projectService 要求手工维护 tsconfig 列表
D 类型化规则无法检查 Promise 相关问题
#

17. Biome 2.x(Rust 实现)一体化 Lint+Format 替代 ESLint+Prettier 的工程价值

A Biome 覆盖 ESLint 全部插件规则
B Biome 2.x 一体化 Lint+Format 带来性能与配置收敛,但规则覆盖与插件生态弱于 ESLint,存量项目宜灰度迁移 ✓ 正确答案
C Biome 无法替代 Prettier 格式化
D Biome 只支持 JavaScript,不支持 TS
#

18. ESLint 9 Flat Config 配置的迁移与团队规范

A ESLint 9 Flat Config 用数组+对象模型替代 .eslintrc,extends 改为配置数组展开,团队规范可拆分为共享 flat 配置分片 ✓ 正确答案
B Flat Config 不支持 ignores
C Flat Config 仍使用 extends 与 .eslintignore
D 迁移只需改文件扩展名
#

19. Prettier 3 与格式化策略

A Prettier 3 以少配置多语言统一格式化,团队用保存时格式化、提交前兜底与 CI --check 三层策略收敛格式 ✓ 正确答案
B Prettier 配置项越多越好
C CI 中不应检查格式
D Prettier 支持的项目语言有限,仅 JS
#

20. oxlint(Rust linter)的极快速度与规则覆盖边界

A oxlint 覆盖所有类型感知规则
B oxlint 的速度来自 Rust 并行与无类型服务,但类型感知规则与自定义插件仍需 ESLint,适合作为快速层与 ESLint 并用 ✓ 正确答案
C oxlint 不支持 --fix
D oxlint 是 JS 实现的 linter
#

21. Stylelint 与 Biome 对 CSS/SCSS/Less 文件格式化与 lint 的工程取舍

A Biome 的 CSS 规则深度与 Stylelint 完全一致
B Stylelint 以规则深度与 SCSS/Less 支持见长,Biome 以一体化与速度见长,存量样式库保留 Stylelint、新项目可选用 Biome 或混合 ✓ 正确答案
C Stylelint 不支持自定义语法
D Biome 无法格式化 CSS
#

22. ESLint 插件与 Prettier 的协作

A 推荐 Prettier 独立格式化、ESLint 专注质量并关闭冲突风格规则,eslint-plugin-prettier 模式单入口但有性能代价 ✓ 正确答案
B 插件风格规则应与 Prettier 同时生效互相覆盖
C eslint-plugin-prettier 是性能最优的协作方式
D ESLint 与 Prettier 无法在同一项目共存
#

23. Stylelint 16 与 CSS 规范治理

A Stylelint 16 默认不支持标准 CSS
B Stylelint 无法检查设计令牌使用
C Stylelint 16 默认支持 CSS 并清晰了与 Prettier 的分工,工程上按错误、可维护性、命名与设计令牌分层治理,CI 门禁加增量启用 ✓ 正确答案
D Stylelint 16 已移除 --fix
#

24. ESLint 9(Flat Config)相较传统 .eslintrc 的工程配置取舍

A 迁移 Flat Config 无需任何验证
B Flat Config 与 .eslintrc 的继承模型相同
C Flat Config 不支持共享配置
D Flat Config 用数组顺序显式合并、无隐式继承,配置确定可审计,但存量配置迁移需改写 extends/overrides/ignore 结构 ✓ 正确答案
#

25. ESLint 的规则分层(base、recommended、strict)

A 所有规则都应一次性全量开启
B 规则按 base/recommended/strict 分层表达风险与严格度,工程上用继承、按模块分级与 warn 到 error 渐进收紧 ✓ 正确答案
C 规则分层与团队无关
D recommended 配置一定包含全部规则
#

26. ESLint 的 React Hooks 规则(eslint-plugin-react-hooks)的现代价值

A Hooks 可以任意在条件中调用
B exhaustive-deps 与 React Compiler 无关
C 该插件只能在 React 18 中使用
D eslint-plugin-react-hooks 通过 rules-of-hooks 与 exhaustive-deps 前置拦截调用顺序与依赖完整性问题,是 React 开发的标准护栏 ✓ 正确答案
#

27. ESLint 的 a11y 规则(eslint-plugin-jsx-a11y)在无障碍工程的协作

A jsx-a11y 能检查所有运行时无障碍问题
B eslint-plugin-jsx-a11y 在源码层拦截静态可判定的无障碍问题,与 axe 测试、人工审计构成三层防线 ✓ 正确答案
C jsx-a11y 与键盘交互无关
D 无障碍只靠 lint 即可保证
#

28. ESLint 的 import 规则(eslint-plugin-import)在模块边界与重排的应用

A eslint-plugin-import 只能检查导入排序
B eslint-plugin-import 覆盖导入解析、架构边界(no-restricted-paths)、排序重排与幽灵依赖检查,支持 --fix 统一导入规范 ✓ 正确答案
C import/order 与 Prettier 必然冲突
D 该插件无法在 monorepo 中使用
#

29. ESLint 的安全规则(eslint-plugin-security)在 XSS 与注入检测的边界

A eslint-plugin-security 能完整检测所有 XSS 场景
B 使用该插件后应用必然安全
C eslint-plugin-security 拦截 eval、命令执行、危险正则等静态危险模式,但无法做数据流追踪,需与 SAST 与动态测试分层配合 ✓ 正确答案
D 该插件只检测性能问题
#

30. Prettier 的 printWidth 与 tabWidth 在团队统一的工程取舍

A printWidth 只影响注释换行
B 改 printWidth 不会产生大量 diff
C 每个开发者可自定格式偏好
D printWidth 与 tabWidth 决定折行与缩进风格,一旦确立极少调整,团队统一并一次性格式化比频繁调参更优 ✓ 正确答案
#

31. Prettier 的 singleQuote 与 JSX 双引号的边界(jsxSingleQuote)

A singleQuote 也控制 JSX 属性引号
B JSX 属性必须用单引号
C 引号配置与转义无关
D singleQuote 控制 JS 字符串、jsxSingleQuote 单独控制 JSX 属性引号,工程上按团队惯例组合配置并与 lint 对齐保持一致 ✓ 正确答案
#

32. Biome 2 的迁移(从 ESLint + Prettier)

A biome migrate 无法处理 ignore 配置
B biome migrate 的规则映射完全等价于原 ESLint 配置
C 迁移后必须彻底删除 ESLint
D Biome 迁移需盘点规则覆盖与语义差异,用双跑对比与逐模块灰度推进,保留回退能力 ✓ 正确答案
#

33. ESLint 的共享配置(eslint-config-*)在 Monorepo 的工程价值

A Monorepo 中每个包都应维护独立配置
B 共享配置不需要版本管理
C 共享配置无法与 flat config 协作
D 共享配置包实现规范单点维护与分层组合,Monorepo 中根级 base 加包级覆盖,并需治理覆盖碎片化 ✓ 正确答案
#

34. ESLint 的 --fix 在 CI 与本地编辑器集成的工程实践

A 编辑器保存时即时 --fix、CI 负责纯净校验(可修复未修复即失败),修复变更随提交可审阅并治理不可修复项 ✓ 正确答案
B 所有规则都可自动修复
C CI 中应直接 --fix 并静默提交修复
D --fix 会改变代码运行结果
#

35. dprint(Rust 实现的格式化工具)相较 Prettier 的工程性能取舍

A dprint 以 Rust 性能与更高可配置度见长,但与 Prettier 输出存在差异,迁移需一次性格式化并验证差异可接受 ✓ 正确答案
B dprint 不支持 TS 格式化
C dprint 比 Prettier 更慢
D dprint 的格式化输出与 Prettier 完全一致
#

36. Prettier 在 Markdown、JSON、YAML 多语言格式化的工程实践

A Prettier 支持 Markdown/JSON/YAML 等多语言格式化,工程上需用 overrides 差异化配置、ignore 排除生成文件并注意语义保护 ✓ 正确答案
B Prettier 只能格式化 JS/TS
C 格式化 Markdown 会破坏所有换行语义
D JSON 格式化后无法被解析
#

37. ESLint 的缓存(--cache)在大项目 CI 的工程性能优化

A --cache 会永久缓存检查结果,配置变更也不失效
B 缓存文件应提交到 git 仓库
C --cache 会检查所有文件
D --cache 只检查变更文件并复用历史结果,配置与依赖变化会触发失效,CI 中应管理缓存目录并谨慎用于关键门禁 ✓ 正确答案
#

38. lint 的渐进式启用策略在遗留代码库的工程实践

A 遗留代码库应一次性全量开启所有 lint 规则
B 基线一旦建立就永久有效
C 渐进式启用先建立违规基线,门禁只拦截新增违规,再按规则、目录逐步治理存量债务并让豁免过期 ✓ 正确答案
D 渐进式启用只适用于新项目
#

39. Snyk/Dependabot/Renovate 在依赖自动升级的工程取舍

A 三者的功能完全相同
B 自动升级无需人工 review
C Renovate 不支持私服
D Dependabot 内置安全更新、Renovate 高可配置版本升级、Snyk 专业安全扫描,常组合使用并配 CI 验证门禁 ✓ 正确答案
#

40. 依赖锁定文件 hash 与 lockfileVersion 在团队协作的可重复构建

A lockfile 只是为了加快安装速度,可以不入库
B lockfile 记录精确依赖树实现可重复构建,需入库、随 package.json 变更更新、统一格式版本并做完整性校验 ✓ 正确答案
C lockfile 冲突应手工逐行合并
D lockfileVersion 与可重复性无关
#

41. SemVer 语义化版本与依赖锁定(package-lock.json/pnpm-lock.yaml)

A package.json 的 range 就是最终安装版本
B SemVer 的 range 声明表达可接受区间,lockfile 冻结实际解析版本,CI 用 frozen 安装保证可重复构建 ✓ 正确答案
C 依赖锁定后永远无需升级
D MAJOR 升级无需 review
#

42. Bun install 的性能与现代特性

A Bun install 与 npm 的安装行为完全一致
B Bun 不支持 monorepo workspaces
C Bun install 以原生实现与全局缓存获得极快安装速度,但依赖解析与 node_modules 布局与 npm/pnpm 存在差异,需验证后切换 ✓ 正确答案
D Bun install 只能安装 Bun 专属依赖
#

43. pnpm workspace 在大型团队的可维护性

A pnpm workspace 可维护性只靠文档
B 各包可以自由依赖未声明的包
C workspace:* 发布时会保留协议原样
D pnpm workspace 通过结构约定、catalog/workspace 协议、changesets 与 CI 冻结校验等机制保证大型团队可维护性 ✓ 正确答案
#

44. corepack 与包管理器版本锁定,packageManager 字段与团队包管理器一致性保障

A packageManager 字段声明精确版本,corepack 按声明激活对应包管理器,配合 CI 联动保障团队与环境的版本一致 ✓ 正确答案
B packageManager 字段只是文档说明,不生效
C corepack 与 Node 版本无关
D 包管理器升级无需验证 lockfile
#

45. lockfile 完整性校验与投毒检测,lockfile 篡改检测与 CI 中的 lockfile 一致性门禁

A lockfile 以 integrity hash 校验下载内容、以 frozen-lockfile 门禁保证与 package.json 一致、以变更审查与审计扫描防投毒 ✓ 正确答案
B lockfile 的 integrity hash 用于格式化校验
C CI 安装时无需校验 lockfile 一致性
D lockfile 变更无需审查
#

46. pnpm 10 对依赖生命周期脚本(postinstall)的默认禁用,approve-builds/allowBuilds 与 ignoredBuiltDependencies 如何治理 install 脚本供应链风险?

A pnpm 10 默认允许所有依赖执行 postinstall
B 生命周期脚本只会下载二进制,无安全风险
C 未批准的构建脚本会被静默跳过
D pnpm 10 默认禁用依赖生命周期脚本,用 approve-builds/onlyBuiltDependencies 白名单放行、ignoredBuiltDependencies 显式忽略,配置入库保证 CI 一致 ✓ 正确答案
#

47. Prettier 的 .prettierignore 与 .gitignore 的协作边界

A Prettier 总是格式化所有文件
B .prettierignore 不存在时 Prettier 不格式化任何文件
C .prettierignore 可以取代 .gitignore
D Prettier 默认跟随 .gitignore 且 .prettierignore 优先级更高,用于豁免"入库但不格式化"的生成文件等场景 ✓ 正确答案
#

48. ESLint 的规则自定义(@typescript-eslint/no-explicit-any 等级)的工程取舍

A any 只在书写处影响类型
B no-explicit-any 默认 error 并联动 no-unsafe-* 拦截类型逃逸,特殊场景用带理由的局部豁免与分目录等级治理 ✓ 正确答案
C any 的使用对类型安全无影响
D 规则等级一旦设定不可调整
#

49. OSV-Scanner / Snyk / Trivy 在 CI 供应链安全扫描的工程取舍

A 三者功能完全相同
B 安全扫描工具不需要门禁策略
C Trivy 只能扫描 npm 依赖
D OSV-Scanner 免费开源扫依赖漏洞、Trivy 覆盖容器与镜像、Snyk 平台化治理,按范围与成本分层组合进 CI ✓ 正确答案
#

50. npx 与 bunx 在跨包运行 CLI 与生态隔离的工程价值

A npx 只能运行已全局安装的命令
B npx 与 bunx 完全等价
C npx/bunx 临时拉取并运行 CLI,支持按命令固定版本与免全局安装,实现版本隔离,但需注意临时拉取的供应链风险 ✓ 正确答案
D npx 会污染项目依赖
#

51. Provenance 与 Sigstore 在 npm 包的供应链签名验证

A Provenance 证明包代码没有漏洞
B Sigstore 需要发布方自管长期密钥
C Provenance 只能在本地发布时生成
D npm Provenance 用 OIDC 身份与 Sigstore 签名生成来源证明,消费方可用 npm audit signatures 验证包来源与构建环境 ✓ 正确答案
#

52. SBOM(软件物料清单)与供应链可追溯

A SBOM 只包含代码不包含依赖
B SBOM 与 lockfile 是同一事物
C SBOM 以 SPDX/CycloneDX 标准列出组件、许可与漏洞引用,支撑漏洞管理、合规审计与影响面分析,需随发布持续更新 ✓ 正确答案
D SBOM 生成一次即可永久使用