@nx/react-native
Version:
79 lines (78 loc) • 3.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.addLinting = addLinting;
const eslint_1 = require("@nx/eslint");
const devkit_1 = require("@nx/devkit");
const lint_1 = require("@nx/react/src/utils/lint");
const eslint_file_1 = require("@nx/eslint/src/generators/utils/eslint-file");
const flat_config_1 = require("@nx/eslint/src/utils/flat-config");
async function addLinting(host, options) {
if (options.linter === 'none') {
return () => { };
}
const tasks = [];
const lintTask = await (0, eslint_1.lintProjectGenerator)(host, {
linter: options.linter,
project: options.projectName,
tsConfigPaths: options.tsConfigPaths,
skipFormat: true,
skipPackageJson: options.skipPackageJson,
setParserOptionsProject: options.setParserOptionsProject,
addPlugin: options.addPlugin,
addPackageJsonDependencyChecks: options.buildable,
});
tasks.push(lintTask);
// Add ignored dependencies and files to dependency-checks rule
if ((0, eslint_file_1.isEslintConfigSupported)(host)) {
(0, eslint_file_1.updateOverrideInLintConfig)(host, options.projectRoot, (override) => Boolean(override.rules?.['@nx/dependency-checks']), (override) => {
const rule = override.rules['@nx/dependency-checks'];
if (Array.isArray(rule) && rule.length > 1) {
// Ensure ignoredDependencies array exists
if (!rule[1].ignoredDependencies) {
rule[1].ignoredDependencies = [];
}
// Add ignored dependencies if they don't already exist
const ignoredDeps = [
'@nx/jest',
'@nx/rollup',
'@rollup/plugin-url',
'@svgr/rollup',
];
for (const dep of ignoredDeps) {
if (!rule[1].ignoredDependencies.includes(dep)) {
rule[1].ignoredDependencies.push(dep);
}
}
}
return override;
});
}
if ((0, eslint_file_1.isEslintConfigSupported)(host)) {
if ((0, flat_config_1.useFlatConfig)(host)) {
(0, eslint_file_1.addPredefinedConfigToFlatLintConfig)(host, options.projectRoot, 'flat/react');
// Add an empty rules object to users know how to add/override rules
(0, eslint_file_1.addOverrideToLintConfig)(host, options.projectRoot, {
files: ['*.ts', '*.tsx', '*.js', '*.jsx'],
rules: {},
});
}
else {
const addExtendsTask = (0, eslint_file_1.addExtendsToLintConfig)(host, options.projectRoot, {
name: 'plugin:@nx/react',
needCompatFixup: true,
});
tasks.push(addExtendsTask);
}
(0, eslint_file_1.addIgnoresToLintConfig)(host, options.projectRoot, [
'public',
'.cache',
'node_modules',
...(options.isTsSolutionSetup ? ['**/out-tsc'] : []),
]);
}
if (!options.skipPackageJson) {
const installTask = (0, devkit_1.addDependenciesToPackageJson)(host, lint_1.extraEslintDependencies.dependencies, lint_1.extraEslintDependencies.devDependencies);
tasks.push(installTask);
}
return (0, devkit_1.runTasksInSerial)(...tasks);
}
;