@ts-dev-tools/core
Version:
TS dev tools Core
35 lines (34 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTestMonorepoProject = void 0;
const node_path_1 = require("node:path");
const PackageJson_1 = require("../services/PackageJson");
const cli_1 = require("./cli");
const test_project_1 = require("./test-project");
async function generateProjectInMonorepoProject(packageName, projectDir, useCache, testProjectGenerator) {
await (0, cli_1.safeExec)(projectDir, "npm init --yes");
await (0, cli_1.safeExec)(projectDir, "npm install");
await (0, cli_1.safeExec)(projectDir, "npm install --save-dev -W typescript");
await (0, cli_1.safeExec)(projectDir, "npm exec tsc -- --init");
PackageJson_1.PackageJson.fromDirPath(projectDir).merge({
private: true,
workspaces: ["packages/*"],
});
const packageDir = (0, node_path_1.join)(projectDir, "packages/test-package");
await (0, test_project_1.createTestProject)(packageName, packageDir, useCache, testProjectGenerator);
await (0, cli_1.safeExec)(projectDir, `npm exec lerna -- init --no-progress --skipInstall`);
await (0, cli_1.safeExec)(projectDir, "npm install");
}
function generateMonorepoProject(packageName, useCache, testProjectGenerator) {
const projectGenerator = (projectDir) => generateProjectInMonorepoProject(packageName, projectDir, useCache, testProjectGenerator);
Object.defineProperty(projectGenerator, "name", {
value: `monorepo-project-generator-${testProjectGenerator.name}`,
configurable: true,
});
return projectGenerator;
}
const createTestMonorepoProject = async (filepath, useCache, testProjectGenerator) => {
const packageName = (0, test_project_1.getPackageNameFromFilepath)(filepath);
return (0, test_project_1.createProjectForTestFile)(filepath, useCache, generateMonorepoProject(packageName, useCache, testProjectGenerator));
};
exports.createTestMonorepoProject = createTestMonorepoProject;