UNPKG

nx

Version:

The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.

38 lines (37 loc) 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addNxToTurborepo = addNxToTurborepo; const node_path_1 = require("node:path"); const fileutils_1 = require("../../../utils/fileutils"); const output_1 = require("../../../utils/output"); const package_manager_1 = require("../../../utils/package-manager"); const format_1 = require("./format"); const utils_1 = require("./utils"); async function addNxToTurborepo(_options) { const repoRoot = process.cwd(); output_1.output.log({ title: 'Initializing Nx based on your old Turborepo configuration', }); output_1.output.log({ title: '💡 Did you know?', bodyLines: [ '- Turborepo requires you to maintain all your common scripts like "build", "lint", "test" in all your packages, as well as their applicable cache inputs and outputs.', `- Nx is extensible and has plugins for the tools you use to infer all of this for you purely based on that tool's configuration file within your packages.`, '', ' - E.g. the `@nx/vite` plugin will infer the "build" script based on the existence of a vite.config.js file.', ' - Therefore with zero package level config, `nx build my-app` knows to run the `vite build` CLI directly, with all Nx cache inputs and outputs automatically inferred.', '', `NOTE: None of your existing package.json scripts will be modified as part of this initialization process, you can already use them as-is with Nx, but you can learn more about the benefits of Nx's inferred tasks at https://nx.dev/concepts/inferred-tasks`, ], }); let nxJson = (0, utils_1.createNxJsonFromTurboJson)((0, fileutils_1.readJsonFile)('turbo.json')); const nxJsonPath = (0, node_path_1.join)(repoRoot, 'nx.json'); (0, fileutils_1.writeJsonFile)(nxJsonPath, nxJson); (0, format_1.recordInitWrite)(nxJsonPath); const packageManager = (0, package_manager_1.detectPackageManager)(repoRoot); const pmc = (0, package_manager_1.getPackageManagerCommand)(packageManager); (0, utils_1.updateGitIgnore)(repoRoot); (0, utils_1.addDepsToPackageJson)(repoRoot, packageManager); output_1.output.log({ title: '📦 Installing dependencies' }); (0, utils_1.runInstall)(repoRoot, packageManager, pmc); }