@nxext/stencil
Version:
Nx plugin for stenciljs
74 lines • 4.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.libraryGenerator = libraryGenerator;
const tslib_1 = require("tslib");
const devkit_1 = require("@nx/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 add_project_1 = require("./lib/add-project");
const make_lib_buildable_1 = require("../../generators/make-lib-buildable/make-lib-buildable");
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
const js_1 = require("@nx/js");
const log_show_project_command_1 = require("@nx/devkit/src/utils/log-show-project-command");
function normalizeOptions(host, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
var _a;
yield (0, project_name_and_root_utils_1.ensureRootProjectName)(options, 'library');
const { projectName, names: projectNames, projectRoot, importPath, } = yield (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
name: options.name,
projectType: 'library',
directory: options.directory,
importPath: options.importPath,
});
(_a = options.name) !== null && _a !== void 0 ? _a : (options.name = projectName);
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;
return Object.assign(Object.assign({}, options), { projectName,
projectRoot, projectDirectory: projectRoot, parsedTags,
style,
appType,
importPath });
});
}
function createFiles(host, options) {
(0, devkit_1.generateFiles)(host, (0, devkit_1.joinPathFragments)(__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 tslib_1.__awaiter(this, void 0, void 0, function* () {
(0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(host, '@nxext/stencil', 'library');
const options = yield 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 jsInitTask = yield (0, js_1.initGenerator)(host, Object.assign(Object.assign({}, options), { tsConfigName: 'tsconfig.base.json', skipFormat: true }));
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.makeLibBuildableGenerator)(host, {
name: options.projectName,
importPath: options.importPath,
style: options.style,
});
}
if (!options.skipFormat) {
yield (0, devkit_1.formatFiles)(host);
}
return (0, devkit_1.runTasksInSerial)(jsInitTask, initTask, () => (0, log_show_project_command_1.logShowProjectCommand)(options.projectName));
});
}
exports.default = libraryGenerator;
//# sourceMappingURL=generator.js.map