UNPKG

2.77 kBJavaScriptView Raw
1#!/usr/bin/env node
2const fs = require("fs");
3const path = require("path");
4const childProcess = require("child_process");
5const chalk = require("chalk");
6const logError = message => {
7 console.log(chalk.red("[Error]: " + message));
8};
9const logInfo = message => {
10 console.log(chalk.blue("[Start]: " + message));
11};
12const logSuccess = message => {
13 console.log(chalk.green("[Done]: " + message));
14};
15
16let global = "";
17let packagePath = path.resolve(process.cwd(), "package.json");
18
19if (!fs.existsSync(packagePath)) {
20 logError("Cannot find package.json file in the current directory");
21 process.exit(1);
22}
23
24const packageJson = require(packagePath);
25let ignorePkgs = [];
26const upgradePackages = async () => {
27 if (packageJson["fscripts"]) {
28 if (packageJson["fscripts"]["ignore-upgrade"]) {
29 ignorePkgs = packageJson["fscripts"]["ignore-upgrade"];
30 }
31 }
32 let upgraded = { before: {}, after: {} };
33 for (let element of ["dependencies", "devDependencies", "peerDependencies"]) {
34 if (packageJson[element]) {
35 const packages = Object.keys(packageJson[element]);
36 let packagesList = packages
37 .filter(pkk => !ignorePkgs.includes(pkk))
38 .map(pkk => {
39 upgraded["before"][pkk] = packageJson[element][pkk];
40 return pkk + "@latest";
41 })
42 .join(" ");
43 let command = `yarn add ${packagesList}`;
44 try {
45 // logInfo(command);
46 childProcess.execSync(command, {
47 stdio: "inherit",
48 env: Object.assign({}, process.env, {
49 FORCE_COLOR: true,
50 PATH: `${path.resolve("node_modules")}:${process.env.PATH}`
51 })
52 });
53 const packageJsonAfter = JSON.parse(fs.readFileSync(packagePath));
54 const packagesAfter = Object.keys(packageJsonAfter[element]);
55 let packagesListAfter = packagesAfter
56 .filter(pkk => !ignorePkgs.includes(pkk))
57 .map(pkk => {
58 upgraded["after"][pkk] = packageJsonAfter[element][pkk];
59 return upgraded["before"][pkk] !== upgraded["after"][pkk]
60 ? `Updated: ${pkk} from: ${upgraded["before"][pkk]} | to: ${
61 upgraded["after"][pkk]
62 }\n`
63 : ``;
64 })
65 .join("");
66 logSuccess(packagesListAfter);
67 } catch (e) {
68 logError(`${command} - ${e}`);
69 }
70 }
71 }
72};
73module.exports = upgradePackages;