UNPKG

@nxext/stencil

Version:

Nx plugin for stenciljs

63 lines 3.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addVueGenerator = addVueGenerator; const tslib_1 = require("tslib"); const devkit_1 = require("@nx/devkit"); const js_1 = require("@nx/js"); const eslint_1 = require("@nx/eslint"); const versions_1 = require("../../../utils/versions"); const fileutils_1 = require("../../../utils/fileutils"); const common_1 = require("@nxext/common"); const stencil_core_utils_1 = require("../../../stencil-core-utils"); const calculate_stencil_source_options_1 = require("../lib/calculate-stencil-source-options"); function prepareVueLibrary(host, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const { libsDir } = (0, devkit_1.getWorkspaceLayout)(host); const vueProjectName = `${options.projectName}-vue`; const vueProjectDir = `libs/${vueProjectName}`; const jsInitTask = yield (0, js_1.initGenerator)(host, Object.assign(Object.assign({}, options), { tsConfigName: 'tsconfig.base.json', skipFormat: true })); (0, devkit_1.ensurePackage)('@nx/vue', devkit_1.NX_VERSION); const { libraryGenerator } = yield Promise.resolve().then(() => require('@nx/vue')); const libraryTarget = yield libraryGenerator(host, { directory: vueProjectDir, publishable: options.publishable, bundler: options.publishable ? 'vite' : 'none', importPath: options.importPath, component: false, skipTsConfig: false, skipFormat: true, unitTestRunner: 'vitest', linter: eslint_1.Linter.EsLint, }); yield (0, devkit_1.addDependenciesToPackageJson)(host, {}, { '@stencil/vue-output-target': versions_1.STENCIL_OUTPUTTARGET_VERSION['vue'], }); host.write(`${libsDir}/${vueProjectName}/src/index.ts`, `export * from './generated/components';`); return (0, devkit_1.runTasksInSerial)(jsInitTask, libraryTarget); }); } function addVueOutputtarget(tree, projectName, stencilProjectConfig, stencilConfigPath, stencilConfigSource, packageName) { const vueProjectConfig = (0, devkit_1.readProjectConfiguration)(tree, `${projectName}-vue`); const realtivePath = (0, fileutils_1.getRelativePath)((0, fileutils_1.getDistDir)(stencilProjectConfig.root), vueProjectConfig.root); const changes = (0, devkit_1.applyChangesToString)(stencilConfigSource.text, [ ...(0, common_1.addImport)(stencilConfigSource, `import { vueOutputTarget } from '@stencil/vue-output-target';`), ...(0, stencil_core_utils_1.addOutputTarget)(stencilConfigSource, ` vueOutputTarget({ componentCorePackage: '${packageName}', proxiesFile: '${realtivePath}/src/generated/components.ts', includeDefineCustomElements: true, }) `), ]); tree.write(stencilConfigPath, changes); } function addVueGenerator(host, options) { return 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.default = addVueGenerator; //# sourceMappingURL=generator.js.map