@nx/vite
Version:
60 lines (59 loc) • 2.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ignoreViteTempFiles = ignoreViteTempFiles;
exports.addViteTempFilesToGitIgnore = addViteTempFilesToGitIgnore;
exports.isEslintInstalled = isEslintInstalled;
const devkit_1 = require("@nx/devkit");
const versions_1 = require("./versions");
async function ignoreViteTempFiles(tree, projectRoot) {
addViteTempFilesToGitIgnore(tree);
await ignoreViteTempFilesInEslintConfig(tree, projectRoot);
}
function addViteTempFilesToGitIgnore(tree) {
let gitIgnoreContents = tree.exists('.gitignore')
? tree.read('.gitignore', 'utf-8')
: '';
if (!/^vite\.config\.\*\.timestamp\*$/m.test(gitIgnoreContents)) {
gitIgnoreContents = (0, devkit_1.stripIndents) `${gitIgnoreContents}
vite.config.*.timestamp*`;
}
tree.write('.gitignore', gitIgnoreContents);
}
async function ignoreViteTempFilesInEslintConfig(tree, projectRoot) {
if (!isEslintInstalled(tree)) {
return;
}
(0, devkit_1.ensurePackage)('@nx/eslint', versions_1.nxVersion);
// Use CommonJS `require` rather than a dynamic ESM `import`: `ensurePackage`
// makes the on-demand-installed package available via `Module._initPaths`,
// which `require()` honors but ESM resolution does not. Under nodenext, a
// dynamic `import()` is preserved as a true ESM dynamic import, so it can't
// see the temp install — generators that go down this path crash with
// `Cannot find package '@nx/eslint'`.
const { addIgnoresToLintConfig, isEslintConfigSupported, useFlatConfig, } = require('@nx/eslint/internal');
if (!isEslintConfigSupported(tree)) {
return;
}
const isUsingFlatConfig = useFlatConfig(tree);
if (!projectRoot && !isUsingFlatConfig) {
// root eslintrc files ignore all files and the root eslintrc files add
// back all the project files, so we only add the ignores to the project
// eslintrc files
return;
}
// for flat config, we update the root config file
const directory = isUsingFlatConfig ? '' : (projectRoot ?? '');
addIgnoresToLintConfig(tree, directory, ['**/vite.config.*.timestamp*']);
}
function isEslintInstalled(tree) {
try {
require('eslint');
return true;
}
catch { }
// it might not be installed yet, but it might be in the tree pending install
const { devDependencies, dependencies } = tree.exists('package.json')
? (0, devkit_1.readJson)(tree, 'package.json')
: {};
return !!devDependencies?.['eslint'] || !!dependencies?.['eslint'];
}