npm-upgrade
Version:
Interactive CLI utility to easily update outdated NPM dependencies
63 lines (62 loc) • 2.82 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.handler = exports.describe = exports.command = void 0;
var _difference2 = _interopRequireDefault(require("lodash/difference"));
var _transform2 = _interopRequireDefault(require("lodash/transform"));
var _keys2 = _interopRequireDefault(require("lodash/keys"));
var _inquirer = require("inquirer");
var _catchAsyncError = _interopRequireDefault(require("../../catchAsyncError"));
var _askUser = _interopRequireDefault(require("../../askUser"));
var _cliStyles = require("../../cliStyles");
var _ignore = require("../ignore");
var _Config = _interopRequireDefault(require("../../Config"));
var _packageUtils = require("../../packageUtils");
const command = exports.command = 'add [module]';
const describe = exports.describe = 'Add module to ignored list';
const handler = exports.handler = (0, _catchAsyncError.default)(async opts => {
let {
module: moduleName
} = opts;
const config = new _Config.default();
config.ignore = config.ignore || {};
console.log(`Currently ignored modules:\n\n${(0, _ignore.createIgnoredModulesTable)(config.ignore)}\n`);
if (moduleName && !(0, _packageUtils.getModuleVersion)(moduleName, (0, _packageUtils.loadPackageJson)().content)) {
console.log((0, _cliStyles.attention)(`Couldn't find module ${(0, _cliStyles.strong)(moduleName)} in ${(0, _cliStyles.strong)('package.json')}. Choose existing module.\n`));
moduleName = null;
}
let ignoreMore;
do {
if (!moduleName) {
moduleName = await (0, _askUser.default)({
type: 'list',
message: 'Select module to ignore:',
choices: makeModulesToIgnoreList(config.ignore),
pageSize: 20
});
}
config.ignore[moduleName] = await (0, _ignore.askIgnoreFields)('*');
config.save();
console.log((0, _cliStyles.success)(`\nModule ${(0, _cliStyles.strong)(moduleName)} added to ignored list.\n`));
moduleName = null;
ignoreMore = await (0, _askUser.default)({
message: 'Do you want to ignore some other module?',
type: 'confirm'
});
} while (ignoreMore);
});
function makeModulesToIgnoreList(ignoredModulesConfig) {
const {
content: packageJson
} = (0, _packageUtils.loadPackageJson)();
const ignoredModules = (0, _keys2.default)(ignoredModulesConfig);
return (0, _transform2.default)(_packageUtils.DEPS_GROUPS, (list, group) => {
const groupModules = (0, _keys2.default)(packageJson[group.field]);
const availableToIgnore = (0, _difference2.default)(groupModules, ignoredModules);
if (availableToIgnore.length) {
list.push(new _inquirer.Separator((0, _cliStyles.strong)(`--- ${group.field} ---`)), ...availableToIgnore);
}
});
}