UNPKG

@nxext/stencil

Version:

Nx plugin for stenciljs

63 lines 3.78 kB
"use strict"; 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