前言
初次接触前端开发还是2017年,那时还是vue2和js, 换过工作之后,前端就没有再开发了。
现在vue3和ts大行其道, 随着AI浪潮的到来, 可以结合前端做一些有意思的工具,所以需要重新学习前端。
目前正在学习vue-vben-admin框架, 记录一下学习过程。本章主要介绍package.json
官方代码地址:vue-vben-admin
代码结构

package.json
vue-vben-admin框架的package.json如下:
|
|
对package.json的字段需要进行说明:
name: 项目名称,要少于214个字符,不能大写开头和使用node的核心库名, 可以使用点和下划线开头。version: 项目版本, 和name一起确定一个项目, 不能重复。private: 是否为私有项目, 如果为true, 则不会被发布到npm上。keywords: 项目关键字, 用于npm search搜索。homepage: 项目主页bugs: 项目问题地址repository: 项目仓库license: 项目许可证, 可以是MIT, Apache-2.0, GPL-3.0等。许可查询地址:licenseauthor: 项目作者type: 项目类型,可以是module,commonjs,none等。scripts: 项目脚本devDependencies: 项目开发依赖,不想安装额外的test或者文档框架,可以在这里添加。engines: 项目引擎, 可以指定node和pnpm的版本。packageManager: 项目包管理器pnpm: 项目包管理器配置peerDependencyRules: 项目依赖规则overrides: 项目依赖覆盖neverBuiltDependencies: 项目不需要构建的依赖,安装期间不会执行所列包的preinstall,install和postinstall脚本。
- 官方
package.json文档地址:package.json - 官方
script脚本参数:scripts - 官方
pnpm文档:pnpm
工作空间
在devDependencies里, 可以看到依赖的服务版本有两种方式,
一种是catalog:的方式, 一种是workspace:*的方式。这两个依赖的具体版本是在pnpm-workspace.yaml文件中定义的。
pnpm-workspace.yaml文件如下:
|
|
workspace:*: 用的是以@vben/开头的依赖, 这些包在internal/*和scripts/*目录下catalog:: 用的是第三方依赖
scripts
package.json里的scripts字段是项目的脚本, 可以在命令行中执行。
在本项目中, 常用的脚本有:
dev: 启动开发服务器build: 构建项目test: 运行测试lint: 检查代码格式format: 格式化代码version: 版本管理commit: 提交代码
官方scripts的使用文档:scripts,
比较重要的有生命周期脚本:
pre<event>:event事件前执行的脚本, 如preinstall在安装前执行。event: 事件脚本, 如install在安装时执行。post<event>:event事件后执行的脚本, 如postinstall在安装后执行。
本项目中,当运行pnpm install时,具体执行顺序如下:
-
执行
preinstall脚本(npx only-allow pnpm) -
执行
install脚本 -
执行
postinstall脚本(pnpm -r run stub --if-present)pnpm -r run stub --if-present会找本项目下的所有包的package.json, 如果有stub脚本, 则执行。stub脚本会在package.json的scripts字段中定义, 如下:1 2 3"scripts": { "stub": "pnpm unbuild --stub" }- 找到的包有很多,比如:
internal/lint-configs/eslint-config执行pnpm unbuild --stubunbuild是打包工具,会生成cjs和mjs到dist目录下
-
执行
prepare脚本(is-ci || husky)is-ci是判断是否在CI环境下husky是git的钩子工具, 可以在git提交前执行一些脚本, 如:格式化代码. 本项目配置在.husky/*目录下, 具体有三个文件:commit-msg是在提交消息前执行的脚本:
1 2 3 4echo Start running commit-msg hook... # Check whether the git commit information is standardized pnpm exec commitlint --edit "$1" echo Run commit-msg hook done.post-merge是在合并分支后执行的脚本, 如:检查代码格式是否正确。
1pnpm installpre-commit是在提交前执行的脚本, 如:检查代码格式是否正确。
1 2 3 4pnpm vsh code-workspace --auto-commit # Format and submit code according to lintstagedrc.js configuration pnpm exec lint-staged echo Run pre-commit hook done.