Skip to content
This repository has been archived by the owner on Aug 7, 2021. It is now read-only.

Commit

Permalink
fix(npm scripts): replace deprecated build-app script on postinstall (#…
Browse files Browse the repository at this point in the history
…184)

fixes #183
  • Loading branch information
sis0k0 authored Jun 9, 2017
1 parent 941541d commit a4e7f1c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 34 deletions.
19 changes: 10 additions & 9 deletions installer.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ const PROJECT_DIR = path.dirname(path.dirname(__dirname));
const APP_DIR = path.resolve(PROJECT_DIR, "app");

function install() {
let packageJson = helpers.getPackageJson(PROJECT_DIR);
const packageJson = helpers.getPackageJson(PROJECT_DIR);

projectFilesManager.addProjectFiles(PROJECT_DIR, APP_DIR);
projectFilesManager.editExistingProjectFiles(PROJECT_DIR);

let scripts = packageJson.scripts || {};
scripts = npmScriptsManager.removeDeprecatedNpmScripts(scripts);
scripts = npmScriptsManager.addNpmScripts(scripts);
const scripts = packageJson.scripts || {};
npmScriptsManager.removeDeprecatedNpmScripts(scripts);
npmScriptsManager.addNpmScripts(scripts);
packageJson.scripts = scripts;

const postinstallOptions = dependencyManager.addProjectDeps(packageJson);
Expand All @@ -29,16 +29,17 @@ function install() {
}

function uninstall() {
let packageJson = helpers.getPackageJson(PROJECT_DIR);
const packageJson = helpers.getPackageJson(PROJECT_DIR);

projectFilesManager.removeProjectFiles(PROJECT_DIR, APP_DIR);
npmScriptsManager.removeDeprecatedNpmScripts(packageJson);

let scripts = packageJson.scripts;
scripts = npmScriptsManager.removeNpmScripts(scripts);
packageJson.scripts = scripts;
console.log("Removing npm scripts...");
npmScriptsManager.removeDeprecatedNpmScripts(packageJson);
npmScriptsManager.removeNpmScripts(packageJson.scripts);

helpers.writePackageJson(packageJson, PROJECT_DIR);

console.log("NativeScript Webpack removed!");
}

module.exports = {
Expand Down
32 changes: 7 additions & 25 deletions npmScriptsManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,24 @@ const DEPRECATED_SCRIPT_TEMPLATES = Object.freeze([

const PLATFORMS = Object.freeze(["android", "ios"]);

function addNpmScripts(scripts) {
scripts = scripts || {};

function addNpmScripts(scripts = {}) {
Object.keys(SCRIPT_TEMPLATES).forEach(name => {
packageJson = addPlatformScript(scripts, name, SCRIPT_TEMPLATES[name]);
addPlatformScript(scripts, name, SCRIPT_TEMPLATES[name]);
});

return scripts;
}

function removeDeprecatedNpmScripts(scripts) {
return removeNpmScripts(scripts, DEPRECATED_SCRIPT_TEMPLATES);
}

function removeNpmScripts(scripts, scriptTemplates = Object.keys(SCRIPT_TEMPLATES)) {
scriptTemplates.forEach(function(templateName) {
scripts = removePlatformScripts(scripts, templateName);
scriptTemplates.forEach(templateName => {
removePlatformScripts(scripts, templateName);
});

return scripts;
}

function addPlatformScript(scripts, nameTemplate, commandTemplate) {
PLATFORMS.forEach(function (platform) {
PLATFORMS.forEach(platform => {
const name = nameTemplate.replace(/\[PLATFORM\]/g, platform);
const command = commandTemplate.replace(/\[PLATFORM\]/g, platform);

Expand All @@ -49,25 +43,13 @@ function addPlatformScript(scripts, nameTemplate, commandTemplate) {
scripts[name] = command;
}
});

return scripts;
}

function removePlatformScripts(scripts, nameTemplate) {
if (!scripts || Object.keys(SCRIPT_TEMPLATES).includes(nameTemplate)) {
return scripts;
}

PLATFORMS.forEach(function (platform) {
PLATFORMS.forEach(platform => {
const name = nameTemplate.replace(/\[PLATFORM\]/g, platform);

if (scripts[name]) {
console.info(`Removing script: ${name}`);
delete scripts[name];
}
delete scripts[name];
});

return scripts;
}

module.exports = {
Expand Down

0 comments on commit a4e7f1c

Please sign in to comment.