@nx-plugins/astro
Version:
The Nx Plugin for Astro that contains executors, generators, and utilities for managing Astro applications and libraries within an Nx workspace.
68 lines • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.librarySchematic = exports.libraryGenerator = void 0;
const tslib_1 = require("tslib");
const devkit_1 = require("@nrwl/devkit");
const path_1 = require("nx/src/utils/path");
const run_tasks_in_serial_1 = require("@nrwl/workspace/src/utilities/run-tasks-in-serial");
const generator_1 = require("../component/generator");
const generator_2 = require("../init/generator");
const create_project_1 = require("./lib/create-project");
const add_linter_1 = require("./lib/add-linter");
const update_base_tsconfig_1 = require("./lib/update-base-tsconfig");
const create_files_1 = require("./lib/create-files");
function libraryGenerator(host, schema) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const tasks = [];
const options = normalizeOptions(host, schema);
const initTask = yield (0, generator_2.default)(host, {
skipPackageJson: options.skipPackageJson
});
tasks.push(initTask);
(0, create_project_1.createProject)(host, options);
(0, create_files_1.createFiles)(host, options);
const lintTask = yield (0, add_linter_1.addLinter)(host, options);
tasks.push(lintTask);
if (!options.skipTsBaseConfig) {
(0, update_base_tsconfig_1.updateBaseTsConfig)(host, options);
}
if (options.component) {
const componentTask = yield (0, generator_1.default)(host, {
name: options.name,
project: options.name,
flat: true,
export: true,
js: options.js,
pascalCaseFiles: options.pascalCaseFiles,
});
tasks.push(componentTask);
}
if (!options.skipFormat) {
yield (0, devkit_1.formatFiles)(host);
}
return (0, run_tasks_in_serial_1.runTasksInSerial)(...tasks);
});
}
exports.libraryGenerator = libraryGenerator;
function normalizeOptions(host, options) {
const name = (0, devkit_1.names)(options.name).fileName;
const projectDirectory = options.directory
? `${(0, devkit_1.names)(options.directory).fileName}/${name}`
: name;
const projectName = projectDirectory.replace(new RegExp('/', 'g'), '-');
const fileName = projectName;
const { libsDir, npmScope } = (0, devkit_1.getWorkspaceLayout)(host);
const projectRoot = (0, devkit_1.joinPathFragments)(libsDir, projectDirectory);
const parsedTags = options.tags
? options.tags.split(',').map((s) => s.trim())
: [];
const importPath = options.importPath || (0, path_1.getImportPath)(npmScope, projectDirectory);
const normalized = Object.assign(Object.assign({}, options), { fileName, routePath: `/${name}`, name: projectName, projectRoot,
projectDirectory,
parsedTags,
importPath });
return normalized;
}
exports.default = libraryGenerator;
exports.librarySchematic = (0, devkit_1.convertNxGenerator)(libraryGenerator);
//# sourceMappingURL=generator.js.map