面试题答案
一键面试1. CI 系统配置
以 GitHub Actions 为例:
- 创建 workflow 文件:在项目根目录下的
.github/workflows
目录中创建一个 YAML 文件,如build.yml
。 - 设置基础配置:
name: Vue CLI Build
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu - latest
- 安装依赖:
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- 构建项目:
- name: Build Vue CLI project
run: npm run build
在 GitLab CI 中,类似地在项目根目录创建 .gitlab-ci.yml
文件,配置 image
(通常为 Node.js 镜像),stages
定义构建阶段,在 build
阶段进行 npm install
和 npm run build
操作。
2. 结合 Vue CLI 特性实现精准版本控制
- 锁定依赖版本:Vue CLI 项目依赖
package.json
管理依赖。在package.json
中,使用精确版本号(如"vue": "2.6.14"
)而不是语义化版本号(如"vue": "^2.6.14"
)。这样在每次npm install
时,会安装指定的精确版本。 - 使用工具链:
- npm shrinkwrap:运行
npm shrinkwrap
命令,它会生成一个npm-shrinkwrap.json
文件。该文件会锁定项目所有依赖的版本,包括传递依赖。在 CI 环境中,优先使用npm install --shrinkwrap
命令安装依赖,这样能确保安装的依赖版本与npm-shrinkwrap.json
中记录的完全一致。 - yarn.lock:如果项目使用 Yarn,Yarn 会自动生成
yarn.lock
文件。这个文件详细记录了每个依赖的精确版本和来源。在 CI 环境中,使用yarn install
命令,Yarn 会根据yarn.lock
安装依赖,保证不同环境下依赖的一致性。
- npm shrinkwrap:运行
3. 依赖更新时平衡稳定性和新特性需求
- 稳定性优先:
- 定期审查:定期(如每月或每季度)审查依赖更新。使用工具如
npm-check-updates
(ncu -u
可交互更新package.json
中的版本号到最新兼容版本)查看哪些依赖有更新。 - 测试隔离:在更新依赖前,创建一个独立的测试环境。例如,在 CI 系统中创建一个新的 workflow 分支专门用于测试依赖更新。在这个环境中,先更新单个依赖,运行所有测试用例,确保没有引入新的问题。如果测试通过,再逐步更新其他依赖。
- 定期审查:定期(如每月或每季度)审查依赖更新。使用工具如
- 引入新特性:
- 特性分支:基于主分支创建特性分支,在特性分支中进行依赖更新。这样可以在不影响主分支稳定性的前提下,探索新依赖带来的特性。
- 灰度发布:如果更新的依赖带来了新功能,可以采用灰度发布策略。先对一小部分用户发布包含新依赖的版本,收集反馈,确认没有重大问题后,再逐步扩大发布范围。