UNPKG

@nstudio/ionic

Version:

Ionic Plugin for xplat

58 lines (57 loc) 3.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const xplat_1 = require("@nstudio/xplat"); const xplat_utils_1 = require("@nstudio/xplat-utils"); const schematics_1 = require("@angular-devkit/schematics"); const utils_1 = require("../../utils"); const versions_1 = require("../../utils/versions"); const devkit_1 = require("@nx/devkit"); function default_1(options) { if (!options.name) { throw new schematics_1.SchematicsException((0, xplat_1.missingArgument)('name', 'Provide a name for your Ionic app.', 'nx g @nstudio/ionic:app name')); } return (0, schematics_1.chain)([ (0, xplat_utils_1.prerun)(options), // adjust naming convention xplat_1.XplatHelpers.applyAppNamingConvention(options, 'ionic'), // create app files (tree, context) => addAppFiles(options, options.name)(tree, context), // add root package dependencies utils_1.XplatIonicHelpers.updateRootDeps(options), // addInstallTask(), // add start/clean scripts (tree) => { const scripts = {}; const platformApp = options.name.replace('-', '.'); const directory = options.directory ? `${options.directory}/` : ''; scripts[`start.${platformApp}`] = `cd apps/${directory}${options.name} && npm start`; scripts[`build.${platformApp}`] = `cd apps/${directory}${options.name} && npm run build:ionic`; scripts[`prepare.${platformApp}`] = `npm run clean && npm run clean.${platformApp} && npm run build.${platformApp}`; scripts[`prepare.${platformApp}.ios`] = `npm run prepare.${platformApp} && cd apps/${directory}${options.name} && npm run cap.add.ios`; scripts[`prepare.${platformApp}.android`] = `npm run prepare.${platformApp} && cd apps/${directory}${options.name} && npm run cap.add.android`; scripts[`open.${platformApp}.ios`] = `cd apps/${directory}${options.name} && npm run cap.ios`; scripts[`open.${platformApp}.android`] = `cd apps/${directory}${options.name} && npm run cap.android`; scripts[`sync.${platformApp}`] = `cd apps/${directory}${options.name} && npm run cap.copy`; scripts[`clean.${platformApp}`] = `cd apps/${directory}${options.name} && npx rimraf hooks node_modules platforms www plugins ios android package-lock.json yarn.lock && yarn`; return (0, xplat_1.updatePackageScripts)(tree, scripts); }, (tree, context) => { const directory = options.directory ? `${options.directory}/` : ''; (0, devkit_1.addProjectConfiguration)((0, xplat_1.convertNgTreeToDevKit)(tree, context), options.name, { name: options.name, root: `apps/${directory}${options.name}/`, sourceRoot: `apps/${directory}${options.name}/src`, projectType: 'application', }); }, ]); } function addAppFiles(options, appPath) { const appname = (0, xplat_utils_1.getAppName)(options, 'ionic'); const directory = options.directory ? `${options.directory}/` : ''; return (0, schematics_1.branchAndMerge)((0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)(`./_files`), [ (0, schematics_1.template)(Object.assign(Object.assign(Object.assign({}, options), (0, xplat_1.getDefaultTemplateOptions)()), { pathOffset: directory ? '../../../' : '../../', appname, xplatFolderName: xplat_1.XplatHelpers.getXplatFoldername('ionic'), capacitorVersion: versions_1.capacitorVersion })), (0, schematics_1.move)(`apps/${directory}${appPath}`), ]))); }