No Description

aexiaoliou 75a752ff31 更新 1 year ago
.vscode 84feabcfd6 init 1 year ago
public 84feabcfd6 init 1 year ago
src 5986f23517 gx 1 year ago
.gitignore 84feabcfd6 init 1 year ago
README.md 75a752ff31 更新 1 year ago
env.d.ts 84feabcfd6 init 1 year ago
index.html 84feabcfd6 init 1 year ago
package.json 75a752ff31 更新 1 year ago
pnpm-lock.yaml 84feabcfd6 init 1 year ago
tsconfig.app.json 5986f23517 gx 1 year ago
tsconfig.json 84feabcfd6 init 1 year ago
tsconfig.node.json 84feabcfd6 init 1 year ago
update 5ab2ba2753 a 1 year ago
vite.config.ts 84feabcfd6 init 1 year ago

README.md

自动更新版本号示例

也许也不是很自动

经过了一小段时间选型放弃了以下方法:

  • git hook pre-commit 无法同步到远程仓库所有人强制使用
  • npm standard-version deprecated了,悲。而且依赖于约定式提交,我不确定能不能让大伙习惯使用这套东西
  • npm commit-and-tag-version npm standard-version的fork持续维护版本 同上
  • google release-please 只支持github

最后还是直接用了npm原生命令npm version
原理如下: 使用npm version patch会增加最后一位版本号,并且自动commit 没了

步骤

需要打包的项目 vue-build / vite-build / uni-h5 / taro-h5 ...

  • package.json中的scripts添加对应命令,比如原来是"build:h5": "uni build", 添加一个 "patch-build:h5": "npm version patch && npm run build:h5"或者你自己喜欢的脚本名
  • 添加并提交你当前工作区,因为该命令不会在工作区没干净之前生效,如果需要尝试构建,使用原先的build:h5就行
  • 运行npm run patch-build:h5

小程序 uni-mp-weixin / taro-mp-weixin ...

  • package.json中的scripts添加对应命令,比如原来是"build:mp-weixin": "...", 添加一个 "patch-build:mp-weixin": "npm version patch && npm run build:mp-weixin"或者你自己喜欢的脚本名
  • 添加并提交你当前工作区,因为该命令不会在工作区没干净之前生效,如果需要进行生产环境下开发,使用原先的build:mp-weixin就行
  • 运行npm run patch-build:mp-weixin
  • 发布小程序

服务端渲染 vue-ssr / vite-ssr / webpack-ssr ...

如果你的项目不依赖于构建,或者你希望每一次提交都更新版本号,可以尝试在目录.git/hooks添加文件pre-commit

npm version patch --no-git-tag-version
git add package.json  # 你的package.json目录

此时你的项目会在每一次提交时自动更新版本号
如果你希望只在某一个根目录被更新时更新:

if git diff HEAD --name-only | grep -q "^frontend/"; then
    cd frontend
    npm version patch --no-git-tag-version
    git add package.json  # 你的package.json目录
fi

本项目预览

npm run dev # 旧版本
# 停止应用
npm run patch-build # 构建并更新版本号
npm run dev # 新版本

访问package.json

虽然版本被更新了,但还是得访问到,修改以下文件以访问package.json

vue/vite

vite.config.ts中的resolve字段添加'@@': fileURLToPath(new URL('.', import.meta.url))或者别的你喜欢的别名,这样可用@@直接访问根目录

如果你的vite.config.ts没有该字段,或者没有该文件,那么:

  • 如果你的vue版本与本项目接近,可以直接参考本项目的vite.config.ts
  • 否则参考vite文档

现在你可以通过@@访问根目录了,例如:

import packageJson from '@@/package.json' // 导入package.json
const version = packageJson.version

或者使用vite提供的json功能

import { version } from '@@/package.json

不过直接使用相对路径访问也是可行的,比如../../package.json这种形式

纯webpack项目

// 相对路径
const version = require('../../package.json').version

Typescript

如果是typescript项目, 需要另外在ts.config.json的include内添加"package.json", 以及path中也要添加"@@/*": ["./*"], 另请参考ts官方文档

附录