From 7a754fdd46ff3d457c3de29341a7c89c19d5eecc Mon Sep 17 00:00:00 2001 From: sis0k0 Date: Wed, 25 Oct 2017 09:38:07 +0300 Subject: [PATCH 1/2] Revert "refactor(update-ns-webpack): provide multiple options for updating the plugin (#297)" This reverts commit edf04f62f3f9b72769692d5d917cf1ea9fc3defb. --- bin/update-ns-webpack | 29 +++++++---- installer.js | 9 ++-- npmScriptsManager.js | 8 ---- projectFilesManager.js | 7 --- verify/update.js | 106 ----------------------------------------- 5 files changed, 23 insertions(+), 136 deletions(-) delete mode 100644 verify/update.js diff --git a/bin/update-ns-webpack b/bin/update-ns-webpack index a2a97f28..0d69d388 100755 --- a/bin/update-ns-webpack +++ b/bin/update-ns-webpack @@ -1,16 +1,27 @@ #!/usr/bin/env node +const { resolve } = require("path"); -const update = require("../verify/update"); +const { getPackageJson, getProjectDir, writePackageJson } = require("../projectHelpers"); +const { addProjectFiles, removeProjectFiles } = require("../projectFilesManager"); +const { forceUpdateProjectDeps } = require("../dependencyManager"); +const { editExistingProjectFiles } = require("../projectFilesManager"); -const flags = JSON.parse(process.env.npm_config_argv).original - .filter(f => f.startsWith("--")) - .map(f => f.substring(2)); +const PROJECT_DIR = getProjectDir({ nestingLvl: 2 }); +const APP_DIR = resolve(PROJECT_DIR, "app"); +const packageJson = getPackageJson(PROJECT_DIR); -function addOption(all, current) { - all[current] = true; - return all; +console.info("Updating dev dependencies..."); +const { deps } = forceUpdateProjectDeps(packageJson); +packageJson.devDependencies = deps; +writePackageJson(packageJson, PROJECT_DIR); + +console.info("\nUpdating configuration files..."); +if (process.env.npm_config_force) { + removeProjectFiles(PROJECT_DIR, APP_DIR); + addProjectFiles(PROJECT_DIR, APP_DIR); +} else { + editExistingProjectFiles(PROJECT_DIR); } -const options = flags.reduce(addOption, {}); -update(options); +console.info("\nProject successfully updated! Don't forget to run `npm install`"); diff --git a/installer.js b/installer.js index d77bb747..1dc53159 100644 --- a/installer.js +++ b/installer.js @@ -32,12 +32,9 @@ function uninstall() { projectFilesManager.removeProjectFiles(PROJECT_DIR, APP_DIR); - const scripts = packageJson.scripts; - if (scripts) { - console.log("Removing npm scripts..."); - npmScriptsManager.removeDeprecatedNpmScripts(scripts); - npmScriptsManager.removeNpmScripts(scripts); - } + console.log("Removing npm scripts..."); + npmScriptsManager.removeDeprecatedNpmScripts(packageJson); + npmScriptsManager.removeNpmScripts(packageJson.scripts); helpers.writePackageJson(packageJson, PROJECT_DIR); diff --git a/npmScriptsManager.js b/npmScriptsManager.js index 7c2a97f0..84c5001f 100644 --- a/npmScriptsManager.js +++ b/npmScriptsManager.js @@ -53,16 +53,8 @@ function removePlatformScripts(scripts, nameTemplate) { }); } -function forceUpdateNpmScripts(scripts) { - removeDeprecatedNpmScripts(scripts); - removeNpmScripts(scripts); - - addNpmScripts(scripts); -} - module.exports = { addNpmScripts, removeDeprecatedNpmScripts, removeNpmScripts, - forceUpdateNpmScripts, }; diff --git a/projectFilesManager.js b/projectFilesManager.js index 2d4aa17a..b8c53ee0 100644 --- a/projectFilesManager.js +++ b/projectFilesManager.js @@ -59,11 +59,6 @@ function removeProjectFiles(projectDir, appDir) { }); } -function forceUpdateProjectFiles(projectDir, appDir) { - removeProjectFiles(projectDir, appDir); - addProjectFiles(projectDir, appDir); -} - function deleteFile(destinationPath) { if (fs.existsSync(destinationPath)) { console.info(`Deleting file: ${destinationPath}`); @@ -194,7 +189,5 @@ function tsOrJs(projectDir, name) { module.exports = { addProjectFiles, removeProjectFiles, - forceUpdateProjectFiles, editExistingProjectFiles, }; - diff --git a/verify/update.js b/verify/update.js deleted file mode 100644 index 9281c552..00000000 --- a/verify/update.js +++ /dev/null @@ -1,106 +0,0 @@ -const { spawn } = require("child_process"); -const { resolve: pathResolve } = require("path"); - -const { getPackageJson, getProjectDir, writePackageJson } = require("../projectHelpers"); -const { forceUpdateProjectFiles } = require("../projectFilesManager"); -const { forceUpdateProjectDeps } = require("../dependencyManager"); -const { forceUpdateNpmScripts } = require("../npmScriptsManager"); - -const PLUGIN_NAME = "nativescript-dev-webpack"; -const PROJECT_DIR = getProjectDir({ nestingLvl: 2 }); - -function update({ - deps: shouldUpdateDeps, - scripts: shouldUpdateScripts, - configs: shouldUpdateConfigs, - projectDir = PROJECT_DIR -} = {}) { - - const commands = []; - - if (shouldUpdateDeps) { - commands.push(() => updateDeps(projectDir)); - } - - if (shouldUpdateScripts) { - commands.push(() => Promise.resolve(updateScripts(projectDir))); - } - - if (shouldUpdateConfigs) { - commands.push(() => Promise.resolve(updateConfigs(projectDir))); - } - - return commands.reduce((current, next) => current.then(next), Promise.resolve()); -} - -function updateScripts(projectDir) { - console.info("Updating npm scripts..."); - - const packageJson = getPackageJson(projectDir); - const scripts = packageJson.scripts || {}; - - forceUpdateNpmScripts(scripts); - packageJson.scripts = scripts; - writePackageJson(packageJson, projectDir); -} - -function updateDeps(projectDir) { - console.info("Updating dev dependencies..."); - - return new Promise((resolve, reject) => { - const packageJson = getPackageJson(projectDir); - const { deps } = forceUpdateProjectDeps(packageJson); - packageJson.devDependencies = deps; - writePackageJson(packageJson, projectDir); - - const command = `npm install --ignore-scripts`; - execute(command).then(resolve).catch(reject); - }); -} - -function updateConfigs(projectDir) { - console.info("Updating configuration files..."); - - const appDir = pathResolve(projectDir, "app"); - forceUpdateProjectFiles(projectDir, appDir); -} - -function execute(command) { - return new Promise((resolve, reject) => { - const args = command.split(" "); - spawnChildProcess(...args) - .then(resolve) - .catch(throwError) - }); -} - -function spawnChildProcess(command, ...args) { - return new Promise((resolve, reject) => { - const escapedArgs = args.map(a => `"${a}"`); - - const childProcess = spawn(command, escapedArgs, { - stdio: "inherit", - pwd: PROJECT_DIR, - shell: true, - }); - - childProcess.on("close", code => { - if (code === 0) { - resolve(); - } else { - reject({ - code, - message: `child process exited with code ${code}`, - }); - } - }); - }); -} - -function throwError(error) { - console.error(error.message); - process.exit(error.code || 1); -} - -module.exports = update; - From 01e8501fd59bad412336f101440749c8a8ea0cba Mon Sep 17 00:00:00 2001 From: sis0k0 Date: Wed, 25 Oct 2017 09:38:10 +0300 Subject: [PATCH 2/2] Revert "chore: provide --force flag to update webpack configurations (#295)" This reverts commit 66d77c1eadbb61c5ca4dc30918292a541afacf2b. --- bin/update-ns-webpack | 10 ++-------- projectFilesManager.js | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/bin/update-ns-webpack b/bin/update-ns-webpack index 0d69d388..57c8427b 100755 --- a/bin/update-ns-webpack +++ b/bin/update-ns-webpack @@ -2,26 +2,20 @@ const { resolve } = require("path"); const { getPackageJson, getProjectDir, writePackageJson } = require("../projectHelpers"); -const { addProjectFiles, removeProjectFiles } = require("../projectFilesManager"); const { forceUpdateProjectDeps } = require("../dependencyManager"); const { editExistingProjectFiles } = require("../projectFilesManager"); const PROJECT_DIR = getProjectDir({ nestingLvl: 2 }); -const APP_DIR = resolve(PROJECT_DIR, "app"); const packageJson = getPackageJson(PROJECT_DIR); console.info("Updating dev dependencies..."); + const { deps } = forceUpdateProjectDeps(packageJson); packageJson.devDependencies = deps; writePackageJson(packageJson, PROJECT_DIR); console.info("\nUpdating configuration files..."); -if (process.env.npm_config_force) { - removeProjectFiles(PROJECT_DIR, APP_DIR); - addProjectFiles(PROJECT_DIR, APP_DIR); -} else { - editExistingProjectFiles(PROJECT_DIR); -} +editExistingProjectFiles(PROJECT_DIR); console.info("\nProject successfully updated! Don't forget to run `npm install`"); diff --git a/projectFilesManager.js b/projectFilesManager.js index b8c53ee0..6eba5170 100644 --- a/projectFilesManager.js +++ b/projectFilesManager.js @@ -62,7 +62,7 @@ function removeProjectFiles(projectDir, appDir) { function deleteFile(destinationPath) { if (fs.existsSync(destinationPath)) { console.info(`Deleting file: ${destinationPath}`); - fs.unlinkSync(destinationPath); + fs.unlink(destinationPath); } }