diff --git a/package.json b/package.json index 4956047..d0d167a 100644 --- a/package.json +++ b/package.json @@ -4,15 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": ". ./set_env.sh && vite", - "devh": ". ./set_env.sh && vite --host", - "build": "run-p type-check \"build-only {@}\" --", - "preview": ". ./set_env.sh && vite preview", - "previewh": ". ./set_env.sh && vite preview --host", - "build-only": ". ./set_env.sh && vite build", - "build:dev": ". ./set_env.sh && vite build --mode development", + "dev": "node scripts/gen-env.mjs", + "devh": "node scripts/gen-env.mjs --host", + "build": "run-p type-check build-only --", + "preview": "node scripts/gen-env.mjs preview", + "previewh": "node scripts/gen-env.mjs preview --host", + "build-only": "node scripts/gen-env.mjs build", + "build:dev": "NODE_ENV=development node scripts/gen-env.mjs build", "type-check": "vue-tsc --build --force", - "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "lint": "eslint . --ext .vue,.js,.jsx,.ts,.tsx --fix --ignore-path .gitignore", "format": "prettier --write src/" }, "dependencies": { diff --git a/scripts/gen-env.mjs b/scripts/gen-env.mjs new file mode 100644 index 0000000..4fb29d1 --- /dev/null +++ b/scripts/gen-env.mjs @@ -0,0 +1,25 @@ +import { execSync, spawn } from 'node:child_process'; +import { fileURLToPath } from 'node:url'; +import { dirname, resolve } from 'node:path'; + +const gitTag = execSync('git describe --tags') + .toString().trim().split('-').slice(0, 2).join('-'); + +const lastCommit = execSync('git log -1 --format=%cd') + .toString().trim(); + +// run whatever came after “npm run dev …” +const argsFromNpm = process.argv.slice(2); // e.g. ["--host"] + +spawn( + process.platform === 'win32' ? 'npx.cmd' : 'npx', + ['vite', ...argsFromNpm], + { + stdio: 'inherit', + env: { + ...process.env, + VITE_APP_GIT_TAG: gitTag, + VITE_APP_LAST_COMMIT: lastCommit + } + } +).on('exit', code => process.exit(code)); \ No newline at end of file