Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/salty-doors-think.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@repo/vitest': patch
---

Setup vitest package
4 changes: 3 additions & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
pnpm lint-staged
#!/usr/bin/env sh

pnpm lint-staged
Binary file added docs/assets/husky-dotenv-diff.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 7 additions & 5 deletions docs/git_hooks_ci.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,20 @@ Instead, it is built to integrate cleanly with your existing tooling, such as Hu

Running `dotenv-diff` before each commit helps catch missing, unused, and misused environment variables early.

A common setup is Husky + lint-staged, where `dotenv-diff` runs automatically on commit.
A common setup is to use Husky to run `dotenv-diff`:

### Example lint-staged config
![Husky + dotenv-diff Example](./assets/husky-dotenv-diff.png)

```json
{
"*.{js,ts,tsx,svelte}": [
"dotenv-diff --example .env.example"
]
"scripts": {
"dotenv-diff": "dotenv-diff --example .env.example"
}
}
```

Best practice if to set the example file to `.env.example` (default is `.env`) to ensure you are validating against your reference file.

## Running dotenv-diff in GitHub Actions

Use `dotenv-diff` in CI to validate environment variable consistency on pull requests.
Expand Down
17 changes: 12 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,22 @@
]
},
"devDependencies": {
"@changesets/cli": "^2.30.0",
"@repo/eslint-config": "workspace:*",
"lint-staged": "^16.3.3",
"eslint": "^9.39.4",
"@repo/tsconfig": "workspace:*",
"@repo/vitest": "workspace:*",
"@types/node": "^25.5.0",
"@types/prompts": "^2.4.9",
"@typescript-eslint/eslint-plugin": "^8.57.0",
"@typescript-eslint/parser": "^8.57.0",
"prettier": "^3.8.1",
"@vitest/coverage-v8": "4.0.18",
"eslint": "^9.39.4",
"husky": "^9.1.7",
"turbo": "^2.8.16",
"@changesets/cli": "^2.30.0"
"lint-staged": "^16.4.0",
"prettier": "^3.8.1",
"turbo": "^2.8.17",
"typescript": "^5.9.3",
"vitest": "^4.1.0"
},
"packageManager": "pnpm@10.30.3"
}
14 changes: 1 addition & 13 deletions packages/@repo/eslint-config/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,6 @@
# @repo/eslint-config

## 2.7.4

### Patch Changes

- bb633f2: Added support for lint-staged

## 2.7.3

### Patch Changes

- b448130: Fixed readme links

## 2.7.2
## 0.0.1

### Patch Changes

Expand Down
2 changes: 1 addition & 1 deletion packages/@repo/eslint-config/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@repo/eslint-config",
"version": "2.7.4",
"version": "0.0.1",
"private": true,
"type": "module",
"exports": {
Expand Down
16 changes: 1 addition & 15 deletions packages/@repo/tsconfig/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,5 @@
# @repo/tsconfig

## 2.7.4

### Patch Changes

- bb633f2: Added support for lint-staged

## 2.7.3

### Patch Changes

- b448130: Fixed readme links

## 2.7.2

### Patch Changes
## 0.0.1

- 41f8e5c: Updated dependencies and release scripts for all packages.
2 changes: 1 addition & 1 deletion packages/@repo/tsconfig/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@repo/tsconfig",
"version": "2.7.4",
"version": "0.0.1",
"private": true,
"type": "module",
"exports": {
Expand Down
14 changes: 14 additions & 0 deletions packages/@repo/vitest/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "@repo/vitest",
"version": "0.0.0",
"private": true,
"type": "module",
"types": "./vitest.config.d.ts",
"exports": {
"./vitest.config.js": {
"types": "./vitest.config.d.ts",
"default": "./vitest.config.js"
},
"./package.json": "./package.json"
}
}
5 changes: 5 additions & 0 deletions packages/@repo/vitest/vitest.config.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import type { ViteUserConfigExport } from 'vitest/config';

declare const config: ViteUserConfigExport;

export default config;
15 changes: 15 additions & 0 deletions packages/@repo/vitest/vitest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
include: ['./test/**/*.test.ts'],
exclude: ['dist', 'node_modules'],
testTimeout: 50000,
hookTimeout: 50000,
coverage: {
provider: 'v8',
reporter: ['text', 'lcov', 'json-summary'],
include: ['src/**/*.{ts,tsx}'],
reportsDirectory: '../../coverage',
},
},
});
16 changes: 0 additions & 16 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,21 +70,5 @@
"chalk": "5.6.2",
"commander": "^14.0.3",
"prompts": "^2.4.2"
},
"devDependencies": {
"@release-it/conventional-changelog": "^10.0.5",
"@repo/eslint-config": "workspace:*",
"@repo/tsconfig": "workspace:*",
"@types/node": "^25.5.0",
"@types/prompts": "^2.4.9",
"@typescript-eslint/eslint-plugin": "^8.57.0",
"@typescript-eslint/parser": "^8.57.0",
"@vitest/coverage-v8": "4.0.18",
"eslint": "^9.39.4",
"husky": "^9.1.7",
"release-it": "^19.2.4",
"turbo": "^2.8.16",
"typescript": "^5.9.3",
"vitest": "^4.1.0"
}
}
3 changes: 1 addition & 2 deletions packages/cli/test/utils/cli-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ let cliPath: string | null = null;
export function buildOnce(): { distDir: string; cliPath: string } {
if (distDir && cliPath) return { distDir, cliPath };
distDir = fs.mkdtempSync(path.join(process.cwd(), 'dist-test-'));
const tsc = path.join(process.cwd(), 'node_modules', '.bin', 'tsc');
execSync(`${tsc} --outDir ${distDir}`, { stdio: 'inherit' });
execSync(`tsc --outDir ${distDir}`, { stdio: 'inherit' });
cliPath = path.join(distDir, 'bin', 'dotenv-diff.js');
return { distDir, cliPath };
}
Expand Down
1 change: 0 additions & 1 deletion packages/cli/types/app.d.ts

This file was deleted.

17 changes: 3 additions & 14 deletions packages/cli/vitest.config.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,4 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
include: ['./test/**/*.test.ts'],
exclude: ['dist', 'node_modules'],
testTimeout: 50000,
hookTimeout: 50000,
coverage: {
provider: 'v8',
reporter: ['text', 'lcov', 'json-summary'],
include: ['src/**/*.{ts,tsx}'],
reportsDirectory: '../../coverage',
},
},
});
import baseConfig from '@repo/vitest/vitest.config.js';

export default defineConfig(baseConfig);
Loading
Loading