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

fix(npm scripts): replace deprecated build-app script on postinstall #184

Merged
merged 1 commit into from
Jun 9, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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