@nativescript/nx
Version:
NativeScript Plugin for Nx
138 lines • 6.54 kB
JavaScript
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
;