Skip to content

Commit edf1314

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents 17d12f2 + 2c664b9 commit edf1314

File tree

6 files changed

+52
-7
lines changed

6 files changed

+52
-7
lines changed

.github/workflows/test-and-release.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ jobs:
3030
steps:
3131
- name: 📥 Checkout repository
3232
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # main
33+
with:
34+
# Fetches 20 commits.
35+
# This is trade-off between checkout speed and ability to create an accurate CHANGELOG.md
36+
# See https://github.com/peerigon/template-public-package/issues/2
37+
fetch-depth: 20
3338

3439
- name: 🟢 Setup Node.js
3540
uses: actions/setup-node@d02c89dce7e1ba9ef629ce0680989b3a1cc72edb # main
@@ -56,10 +61,10 @@ jobs:
5661
npm ci --ignore-scripts --prefer-offline --no-audit
5762
5863
- name: 🧪 Run tests
59-
run: |
60-
npm test
6164
env:
6265
CI: true
66+
run: |
67+
npm test
6368
6469
- name: 🧪 Run integration test
6570
if: "github.event_name == 'workflow_dispatch'"

.vscode/extensions.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
{
2-
"recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
2+
"recommendations": [
3+
"esbenp.prettier-vscode",
4+
"dbaeumer.vscode-eslint",
5+
"vitest.explorer"
6+
]
37
}

package-lock.json

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
"@types/qs": "^6.14.0",
8383
"@vitest/coverage-v8": "^4.0.18",
8484
"dotenv": "^17.2.3",
85+
"env-var": "^7.5.0",
8586
"eslint": "9.39.2",
8687
"husky": "^9.1.7",
8788
"jsr": "^0.14.3",

src/env.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @file Environment variable configuration.
3+
*
4+
* This file intentionally exports an `env` object so that it can easily be
5+
* auto-imported just by typing `env`.
6+
*
7+
* Getters are used so that required env vars only throw when they are actually
8+
* accessed. That way you do not always have to supply all env vars (e.g. when
9+
* running only a subset of the app).
10+
*
11+
* However, it is strongly encouraged to destructure env vars at the top-level
12+
* module scope so that errors are thrown immediately: `const { CI } = env;`
13+
* Processes should fail immediately if an env var is missing.
14+
*/
15+
import envVar from "env-var";
16+
17+
export const env = {
18+
get CI() {
19+
return envVar.get("CI").default("false").asBool();
20+
},
21+
};

vite.config.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1+
import { loadEnv } from "vite";
12
import { defineConfig } from "vitest/config";
3+
import { env } from "./src/env.ts";
24

3-
const isCi = process.env["CI"] === "true";
5+
const { CI } = env;
46
const isIntegrationTest = process.argv.at(-1) === "integration.test.ts";
57

6-
export default defineConfig({
8+
export default defineConfig(({ mode }) => ({
79
test: {
10+
env: loadEnv(mode, import.meta.dirname, ""),
811
include: ["src/**/*.test.?(c|m)[jt]s?(x)"],
912
exclude: isIntegrationTest ? [] : ["src/integration.test.ts"],
1013
setupFiles: ["dotenv/config", "./src/tests/setup.ts"],
1114
coverage: {
12-
enabled: isCi,
15+
enabled: CI,
1316
reporter: ["html", "lcov"],
1417
include: ["src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
1518
},
1619
},
17-
});
20+
}));

0 commit comments

Comments
 (0)