UNPKG

@nx/expo

Version:

The Expo Plugin for Nx contains executors and generators for managing and developing an expo application within your workspace. For example, you can directly build for different target platforms as well as generate projects and publish your code.

79 lines (78 loc) 3.39 kB
"use strict"; 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, 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, [ '.expo', 'web-build', 'cache', 'dist', ...(options.isTsSolutionSetup ? ['**/out-tsc'] : []), ]); } if (!options.skipPackageJson) { const installTask = await (0, devkit_1.addDependenciesToPackageJson)(host, lint_1.extraEslintDependencies.dependencies, lint_1.extraEslintDependencies.devDependencies); tasks.push(installTask); } return (0, devkit_1.runTasksInSerial)(...tasks); }