UNPKG

@nativescript/nx

Version:

NativeScript Plugin for Nx

138 lines 6.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFrameworksFromOptions = getFrameworksFromOptions; exports.getFrameworkChoice = getFrameworkChoice; exports.updatePluginDependencies = updatePluginDependencies; exports.getUpdatedPluginSettings = getUpdatedPluginSettings; exports.updatePluginSettings = updatePluginSettings; exports.getPlatformName = getPlatformName; exports.getAppNamingConvention = getAppNamingConvention; exports.quoteString = quoteString; const devkit_1 = require("@nx/devkit"); const general_1 = require("./general"); const versions_1 = require("./versions"); const package_json_1 = require("@nx/devkit/src/utils/package-json"); const posix_1 = require("node:path/posix"); function getFrameworksFromOptions(frameworkArgument) { // will support comma-delimited list of frameworks to generate support for // most common to generate 1 at a time, but we will allow multiple // always default framework choice to first in list when multiple return (0, general_1.sanitizeCommaDelimitedArg)(frameworkArgument); } function getFrameworkChoice(frameworkArgument, frameworks) { frameworks = frameworks || getFrameworksFromOptions(frameworkArgument); return frameworks.length ? frameworks[0] : null; } function updatePluginDependencies(tree, options) { const frameworkDependencies = {}; const frameworkDevDependencies = {}; switch (options.framework) { case 'angular': // deps frameworkDependencies['@nativescript/angular'] = versions_1.nsAngularVersion; frameworkDependencies['@angular/animations'] = versions_1.angularVersion; frameworkDependencies['@angular/common'] = versions_1.angularVersion; frameworkDependencies['@angular/compiler'] = versions_1.angularVersion; frameworkDependencies['@angular/core'] = versions_1.angularVersion; frameworkDependencies['@angular/forms'] = versions_1.angularVersion; frameworkDependencies['@angular/platform-browser'] = versions_1.angularVersion; frameworkDependencies['@angular/platform-browser-dynamic'] = versions_1.angularVersion; frameworkDependencies['@angular/router'] = versions_1.angularVersion; frameworkDependencies['rxjs'] = versions_1.rxjsVersion; frameworkDependencies['zone.js'] = versions_1.zonejsVersion; // devDeps frameworkDevDependencies['@angular-devkit/build-angular'] = versions_1.angularVersion; frameworkDevDependencies['@angular/compiler-cli'] = versions_1.angularVersion; frameworkDevDependencies['@nativescript/tailwind'] = versions_1.nsTailwindVersion; frameworkDevDependencies['@ngtools/webpack'] = versions_1.nsNgToolsVersion; frameworkDevDependencies['ajv'] = versions_1.ajvVersion; frameworkDevDependencies['tailwindcss'] = versions_1.tailwindVersion; break; } return (0, package_json_1.addDependenciesToPackageJson)(tree, Object.assign({ '@nativescript/core': versions_1.nsCoreVersion }, frameworkDependencies), Object.assign({ '@nativescript/webpack': versions_1.nsWebpackVersion, '@nativescript/types': versions_1.nsTypesVersion }, frameworkDevDependencies)); } function getUpdatedPluginSettings(options) { const prefix = (0, general_1.getPrefix)(); const frameworks = getFrameworksFromOptions(options.framework); const frameworkChoice = getFrameworkChoice(options.framework, frameworks); const pluginSettings = { prefix, }; if (frameworkChoice && frameworks.length === 1) { // when only 1 framework is specified, auto add as default pluginSettings.framework = frameworkChoice; } if (options.groupByName) { pluginSettings.groupByName = true; } return pluginSettings; } function updatePluginSettings(tree, options) { const packageJsonPath = 'package.json'; if (tree.exists(packageJsonPath)) { // could introduce another json config file but trying to avoid too much extra overhead so just store in package.json for now const pluginSettings = getUpdatedPluginSettings(options); const pluginSettingsKey = (0, general_1.inferPluginSettingKey)(); // update root dependencies for the generated support (0, devkit_1.updateJson)(tree, packageJsonPath, (packageJson) => { var _a; return Object.assign(Object.assign({}, packageJson), { [pluginSettingsKey]: Object.assign(Object.assign({}, ((_a = packageJson[pluginSettingsKey]) !== null && _a !== void 0 ? _a : {})), pluginSettings) }); }); } } /** * Returns a name with the platform. * * @example (app, nativescript) => nativescript-app or app-nativescript * @param name * @param platform */ function getPlatformName(name, platform) { const nameSanitized = (0, general_1.toFileName)(name); return (0, general_1.getGroupByName)() ? !nameSanitized.endsWith(`-${platform}`) ? `${nameSanitized}-${platform}` : nameSanitized : !nameSanitized.startsWith(`-${platform}`) ? `${platform}-${nameSanitized}` : nameSanitized; } function getAppNamingConvention(options, platform) { let name = options.name; let directory = (0, devkit_1.normalizePath)(options.directory); const baseDir = (0, posix_1.basename)(directory); const newBaseDir = getPlatformName(baseDir, platform); const directoryElements = directory.split(posix_1.sep); directoryElements[directoryElements.length - 1] = newBaseDir; directory = directoryElements.join(posix_1.sep); if (name) { name = getPlatformName(name, platform); } return { name, directory, }; } // Copied from: https://github.com/NativeScript/nativescript-cli/blob/16064affee98c837e8cbe0865254dcb5b81f0bbe/lib/common/helpers.ts#L246C1-L268C2 // For https://github.com/NativeScript/nativescript-cli/pull/5808 function bashQuote(s) { if (s[0] === "'" && s[s.length - 1] === "'") { return s; } // replace ' with '"'"' and wrap in '' return "'" + s.replace(/'/g, "'\"'\"'") + "'"; } function cmdQuote(s) { if (s[0] === '"' && s[s.length - 1] === '"') { return s; } // replace " with \" and wrap in "" return '"' + s.replace(/"/g, '\\"') + '"'; } function quoteString(s) { if (!s) { return s; } return process.platform === 'win32' ? cmdQuote(s) : bashQuote(s); } //# sourceMappingURL=helpers.js.map