Skip to content

Commit

Permalink
fix(bundling): ensure vitest timestamp files are ignored
Browse files Browse the repository at this point in the history
  • Loading branch information
Coly010 committed Dec 19, 2024
1 parent 2eb5243 commit 0d42aae
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ exports[`app generated files content - as-provided - my-app general application
.nuxt
.nitro
.cache
vite.config.*.timestamp*"
vite.config.*.timestamp*
vitest.config.*.timestamp*"
`;

exports[`app generated files content - as-provided - my-app general application should add the nuxt and vitest plugins 1`] = `
Expand Down Expand Up @@ -366,7 +367,8 @@ exports[`app generated files content - as-provided - myApp general application s
.nuxt
.nitro
.cache
vite.config.*.timestamp*"
vite.config.*.timestamp*
vitest.config.*.timestamp*"
`;

exports[`app generated files content - as-provided - myApp general application should add the nuxt and vitest plugins 1`] = `
Expand Down
5 changes: 5 additions & 0 deletions packages/vite/migrations.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@
"version": "20.0.6-beta.0",
"description": "Add gitignore entry for temporary vite config files and remove previous incorrect glob.",
"implementation": "./src/migrations/update-20-0-4/add-vite-temp-files-to-git-ignore"
},
"update-20-3-0": {
"version": "20.3.0-beta.2",
"description": "Add gitignore entry for temporary vitest config files.",
"implementation": "./src/migrations/update-20-3-0/add-vitest-temp-files-to-git-ignore"
}
},
"packageJsonUpdates": {
Expand Down
7 changes: 4 additions & 3 deletions packages/vite/src/generators/init/init.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,9 @@ describe('@nx/vite:init', () => {
await initGenerator(tree, {});

// ASSERT
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(
`"vite.config.*.timestamp*"`
);
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(`
"vite.config.*.timestamp*
vitest.config.*.timestamp*"
`);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ describe('addViteTempFilesToGitIgnore', () => {
// ASSERT
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(`
".idea
vite.config.*.timestamp*"
vite.config.*.timestamp*
vitest.config.*.timestamp*"
`);
});

Expand All @@ -33,7 +34,8 @@ describe('addViteTempFilesToGitIgnore', () => {
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(`
".idea
vite.config.*.timestamp*"
vite.config.*.timestamp*
vitest.config.*.timestamp*"
`);
});

Expand All @@ -46,8 +48,9 @@ describe('addViteTempFilesToGitIgnore', () => {
addViteTempFilesToGitIgnore(tree);

// ASSERT
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(
`"vite.config.*.timestamp*"`
);
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(`
"vite.config.*.timestamp*
vitest.config.*.timestamp*"
`);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
import addViteTempFilesToGitIgnore from './add-vitest-temp-files-to-git-ignore';

describe('addViteTempFilesToGitIgnore', () => {
it('should update an existing .gitignore file to add the glob correctly', () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
tree.write('.gitignore', '.idea');

// ACT
addViteTempFilesToGitIgnore(tree);

// ASSERT
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(`
".idea
vite.config.*.timestamp*
vitest.config.*.timestamp*"
`);
});

it('should update an existing .gitignore file and remove incorrect glob and add the glob correctly', () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
tree.write(
'.gitignore',
`.idea
**/vitest.config.{js,ts,mjs,mts,cjs,cts}.timestamp*`
);

// ACT
addViteTempFilesToGitIgnore(tree);

// ASSERT
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(`
".idea
vite.config.*.timestamp*
vitest.config.*.timestamp*"
`);
});

it('should write a new .gitignore file to add the glob correctly', () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
tree.delete('.gitignore');

// ACT
addViteTempFilesToGitIgnore(tree);

// ASSERT
expect(tree.read('.gitignore', 'utf-8')).toMatchInlineSnapshot(`
"vite.config.*.timestamp*
vitest.config.*.timestamp*"
`);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Tree } from '@nx/devkit';
import { addViteTempFilesToGitIgnore as _addViteTempFilesToGitIgnore } from '../../utils/add-vite-temp-files-to-gitignore';

export default function addViteTempFilesToGitIgnore(tree: Tree) {
// need to check if .gitignore exists before adding to it
// then need to check if it contains the following pattern
// **/vite.config.{js,ts,mjs,mts,cjs,cts}.timestamp*
// if it does, remove just this pattern
if (tree.exists('.gitignore')) {
const gitIgnoreContents = tree.read('.gitignore', 'utf-8');
if (
gitIgnoreContents.includes(
'**/vitest.config.{js,ts,mjs,mts,cjs,cts}.timestamp*'
)
) {
tree.write(
'.gitignore',
gitIgnoreContents.replace(
'**/vitest.config.{js,ts,mjs,mts,cjs,cts}.timestamp*',
''
)
);
}
}
_addViteTempFilesToGitIgnore(tree);
}
13 changes: 13 additions & 0 deletions packages/vite/src/utils/add-vite-temp-files-to-gitignore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,17 @@ export function addViteTempFilesToGitIgnore(tree: Tree) {
} else {
tree.write('.gitignore', newGitIgnoreContents);
}

newGitIgnoreContents = `vitest.config.*.timestamp*`;
if (tree.exists('.gitignore')) {
const gitIgnoreContents = tree.read('.gitignore', 'utf-8');
if (!gitIgnoreContents.includes(newGitIgnoreContents)) {
newGitIgnoreContents = stripIndents`${gitIgnoreContents}
${newGitIgnoreContents}`;

tree.write('.gitignore', newGitIgnoreContents);
}
} else {
tree.write('.gitignore', newGitIgnoreContents);
}
}

0 comments on commit 0d42aae

Please sign in to comment.