# 自动更新版本号示例 > ~~也许也不是很自动~~ 经过了一小段时间选型放弃了以下方法: - `git hook pre-commit` 无法同步到远程仓库所有人强制使用 - `npm standard-version` deprecated了,悲。而且依赖于[约定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/),我不确定能不能让大伙习惯使用这套东西 - `npm commit-and-tag-version` `npm standard-version`的fork持续维护版本 同上 - `google release-please` 只支持github 最后还是直接用了npm原生命令`npm version` 原理如下: 使用`npm version patch`会增加最后一位版本号,并且自动commit ~~没了~~ ## 步骤 - 在`package.json`中的`scripts`添加对应命令,比如原来是`"build:h5": "uni build"`, 添加一个 `"patch-build:h5": "npm version patch && uni build"`或者你自己喜欢的脚本名 - 添加并提交你当前工作区,因为该命令不会在工作区没干净之前生效,如果需要尝试构建,使用原先的`build:h5`就行 - 运行`npm run patch-build:h5` ## 本项目预览 ```bash npm run dev # 旧版本 # 停止应用 npm run patch-build # 构建并更新版本号 npm run dev # 新版本 ``` ## 访问package.json 虽然版本被更新了,但还是得访问到,修改以下文件以访问`package.json` 在`vite.config.ts`中的`resolve`字段添加`'@@': fileURLToPath(new URL('.', import.meta.url))`或者别的你喜欢的别名,这样可用`@@`直接访问根目录 如果你的`vite.config.ts`没有该字段,或者没有该文件,那么: - 如果你的vue版本与本项目接近,可以直接参考本项目的`vite.config.ts` - 否则参考vite[文档](https://cn.vitejs.dev/config/) 现在你可以通过@@访问根目录了,例如: ```ts import packageJson from '@@/package.json' // 导入package.json const version = packageJson.version ``` 或者使用vite提供的[json功能](https://cn.vitejs.dev/guide/features.html#json) ```ts import { version } from '@@/package.json ``` 不过直接使用相对路径访问也是可行的,比如`../../package.json`这种形式 如果是typescript项目, 需要另外在`ts.config.json`的include内添加`"package.json"`, 以及path中也要添加`"@@/*": ["./*"]` ## git hook pre-commit 如果你的项目不依赖于构建,或者你希望每一次提交都更新版本号,可以尝试在目录`.git/hooks`添加文件`pre-commit` ```bash npm version patch --commit-hooks false ``` ## 附录 `npm help version`