@nxext/stencil
Version:
Nx plugin for stenciljs
63 lines • 3.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addVueSchematic = exports.addVueGenerator = exports.prepareVueLibrary = void 0;
const tslib_1 = require("tslib");
const devkit_1 = require("@nrwl/devkit");
const versions_1 = require("../../../utils/versions");
const utillities_1 = require("../../../utils/utillities");
const fileutils_1 = require("../../../utils/fileutils");
const ast_utils_1 = require("../../../utils/ast-utils");
const stencil_core_utils_1 = require("../../../stencil-core-utils");
const ast_utils_2 = require("@nrwl/workspace/src/utilities/ast-utils");
const calculate_stencil_source_options_1 = require("../lib/calculate-stencil-source-options");
function prepareVueLibrary(host, options) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
const vueProjectName = `${options.projectName}-vue`;
const { libsDir } = (0, devkit_1.getWorkspaceLayout)(host);
const generators = yield Promise.resolve().then(() => require('@nx-plus/vue'));
const libraryTarget = yield generators.libraryGenerator(host, {
name: vueProjectName,
publishable: options.publishable,
});
(0, devkit_1.addDependenciesToPackageJson)(host, {}, {
'@stencil/vue-output-target': versions_1.STENCIL_OUTPUTTARGET_VERSION['vue']
});
host.delete(`${libsDir}/${vueProjectName}/tests/unit/example.spec.ts`);
host.delete(`${libsDir}/${vueProjectName}/src/lib/HelloWorld.vue`);
host.delete(`${libsDir}/${vueProjectName}/src/index.ts`);
host.delete(`${libsDir}/${vueProjectName}/src/shims-tsx.d.ts`);
host.delete(`${libsDir}/${vueProjectName}/src/shims-vue.d.ts`);
(0, utillities_1.addToGitignore)(host, `${libsDir}/${vueProjectName}/**/generated`);
return libraryTarget;
});
}
exports.prepareVueLibrary = prepareVueLibrary;
function addVueOutputtarget(host, projectName, stencilProjectConfig, stencilConfigPath, stencilConfigSource, packageName) {
const reactProjectConfig = (0, devkit_1.readProjectConfiguration)(host, `${projectName}-vue`);
const realtivePath = (0, fileutils_1.getRelativePath)((0, fileutils_1.getDistDir)(stencilProjectConfig.root), reactProjectConfig.root);
const proxyPath = (0, devkit_1.joinPathFragments)(realtivePath, 'src/generated/components.ts');
const changes = (0, devkit_1.applyChangesToString)(stencilConfigSource.text, [
...(0, ast_utils_1.addImport)(stencilConfigSource, `import { vueOutputTarget, ComponentModelConfig } from '@stencil/vue-output-target';`),
...(0, stencil_core_utils_1.addOutputTarget)(stencilConfigSource, `
vueOutputTarget({
componentCorePackage: '${packageName}',
proxiesFile: '${proxyPath}',
componentModels: vueComponentModels,
})
`)
]);
host.write(stencilConfigPath, changes);
(0, ast_utils_2.addGlobal)(host, stencilConfigSource, stencilConfigPath, 'const vueComponentModels: ComponentModelConfig[] = [];');
}
function addVueGenerator(host, options) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
const libraryTarget = yield prepareVueLibrary(host, options);
const { stencilProjectConfig, stencilConfigPath, stencilConfigSource, packageName } = (0, calculate_stencil_source_options_1.calculateStencilSourceOptions)(host, options.projectName);
addVueOutputtarget(host, options.projectName, stencilProjectConfig, stencilConfigPath, stencilConfigSource, packageName);
return libraryTarget;
});
}
exports.addVueGenerator = addVueGenerator;
exports.default = addVueGenerator;
exports.addVueSchematic = (0, devkit_1.convertNxGenerator)(addVueGenerator);
//# sourceMappingURL=generator.js.map