前言
初次接触前端开发还是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 --stub
unbuild
是打包工具,会生成cjs
和mjs
到dist
目录下
-
执行
prepare
脚本(is-ci || husky
)is-ci
是判断是否在CI环境下husky
是git
的钩子工具, 可以在git
提交前执行一些脚本, 如:格式化代码. 本项目配置在.husky/*
目录下, 具体有三个文件:commit-msg
是在提交消息前执行的脚本:
1 2 3 4
echo 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
是在合并分支后执行的脚本, 如:检查代码格式是否正确。
1
pnpm install
pre-commit
是在提交前执行的脚本, 如:检查代码格式是否正确。
1 2 3 4
pnpm vsh code-workspace --auto-commit # Format and submit code according to lintstagedrc.js configuration pnpm exec lint-staged echo Run pre-commit hook done.