@nxext/stencil
Version:
Nx plugin for stenciljs
71 lines • 3.5 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 typings_1 = require("../../utils/typings");
const utillities_1 = require("../../utils/utillities");
const init_1 = require("../../generators/init/init");
const update_tsconfig_1 = require("./lib/update-tsconfig");
const path_1 = require("path");
const run_tasks_in_serial_1 = require("@nrwl/workspace/src/utilities/run-tasks-in-serial");
const add_project_1 = require("./lib/add-project");
const make_lib_buildable_1 = require("../../generators/make-lib-buildable/make-lib-buildable");
function normalizeOptions(host, options) {
const { libsDir, npmScope } = (0, devkit_1.getWorkspaceLayout)(host);
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 projectRoot = `${libsDir}/${projectDirectory}`;
const parsedTags = options.tags
? options.tags.split(',').map((s) => s.trim())
: [];
const style = (0, utillities_1.calculateStyle)(options.style);
const appType = typings_1.AppType.library;
const importPath = options.importPath || `@${npmScope}/${projectDirectory}`;
return Object.assign(Object.assign({}, options), { projectName,
projectRoot,
projectDirectory,
parsedTags,
style,
appType,
importPath });
}
function createFiles(host, options) {
(0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, './files/lib'), options.projectRoot, Object.assign(Object.assign(Object.assign({}, options), (0, devkit_1.names)(options.name)), { offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot) }));
if (options.unitTestRunner === 'none') {
host.delete(`${options.projectRoot}/src/components/my-component/my-component.spec.ts`);
}
if (!options.component) {
host.delete(`${options.projectRoot}/src/components/my-component`);
}
}
function libraryGenerator(host, schema) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
const options = normalizeOptions(host, schema);
if (options.publishable === true && !options.importPath) {
throw new Error(`For publishable libs you have to provide a proper "--importPath" which needs to be a valid npm package name (e.g. my-awesome-lib or @myorg/my-lib)`);
}
const initTask = yield (0, init_1.initGenerator)(host, options);
(0, add_project_1.addProject)(host, options);
createFiles(host, options);
(0, update_tsconfig_1.updateTsConfig)(host, options);
if (options.buildable || options.publishable) {
yield (0, make_lib_buildable_1.default)(host, {
name: options.projectName,
importPath: options.importPath,
style: options.style
});
}
if (!options.skipFormat) {
yield (0, devkit_1.formatFiles)(host);
}
return (0, run_tasks_in_serial_1.runTasksInSerial)(initTask);
});
}
exports.libraryGenerator = libraryGenerator;
exports.default = libraryGenerator;
exports.librarySchematic = (0, devkit_1.convertNxGenerator)(libraryGenerator);
//# sourceMappingURL=generator.js.map