@nx-plugins/vite
Version:
The Nx Plugin for Vite that contains executors, generators, and utilities for managing Vite applications and libraries within an Nx workspace.
75 lines • 3.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.componentSchematic = exports.componentGenerator = void 0;
const tslib_1 = require("tslib");
const devkit_1 = require("@nrwl/devkit");
const run_tasks_in_serial_1 = require("@nrwl/workspace/src/utilities/run-tasks-in-serial");
const add_exports_barrel_1 = require("./lib/add-exports-barrel");
const create_files_1 = require("./lib/create-files");
function componentGenerator(host, schema) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const options = yield normalizeOptions(host, schema);
(0, create_files_1.createFiles)(host, options);
const tasks = [];
(0, add_exports_barrel_1.addExportsToBarrel)(host, options);
yield (0, devkit_1.formatFiles)(host);
return (0, run_tasks_in_serial_1.runTasksInSerial)(...tasks);
});
}
exports.componentGenerator = componentGenerator;
function normalizeOptions(host, options) {
var _a;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
assertValidOptions(options);
const { className, fileName } = (0, devkit_1.names)(options.name);
const componentFileName = (_a = options.fileName) !== null && _a !== void 0 ? _a : (options.pascalCaseFiles ? className : fileName);
const project = (0, devkit_1.getProjects)(host).get(options.project);
if (!project) {
devkit_1.logger.error(`Cannot find the ${options.project} project. Please double check the project name.`);
throw new Error();
}
const { sourceRoot: projectSourceRoot, projectType } = project;
const directoryFormatted = yield getDirectory(host, options);
if (options.export && projectType === 'application') {
devkit_1.logger.warn(`The "--export" option should not be used with applications and will do nothing.`);
}
return Object.assign(Object.assign({}, options), { directoryFormatted,
className, fileName: componentFileName, projectSourceRoot });
});
}
function getDirectory(host, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const genNames = (0, devkit_1.names)(options.name);
const fileName = options.pascalCaseDirectory === true
? genNames.className
: genNames.fileName;
const workspace = (0, devkit_1.getProjects)(host);
let baseDir;
if (options.directory) {
baseDir = options.directory;
}
else {
baseDir =
workspace.get(options.project).projectType === 'application'
? 'app'
: 'lib';
}
return options.flat ? baseDir : (0, devkit_1.joinPathFragments)(baseDir, fileName);
});
}
function assertValidOptions(options) {
const slashes = ['/', '\\'];
slashes.forEach((s) => {
if (options.name.indexOf(s) !== -1) {
const [name, ...rest] = options.name.split(s).reverse();
let suggestion = rest.map((x) => x.toLowerCase()).join(s);
if (options.directory) {
suggestion = `${options.directory}${s}${suggestion}`;
}
throw new Error(`Found "${s}" in the component name. Did you mean to use the --directory option (e.g. \`nx g c ${name} --directory ${suggestion}\`)?`);
}
});
}
exports.default = componentGenerator;
exports.componentSchematic = (0, devkit_1.convertNxGenerator)(componentGenerator);
//# sourceMappingURL=generator.js.map