@zkochan/pnpm
Version:
Fast, disk space efficient package manager
66 lines • 3.23 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const supi_1 = require("supi");
const createStoreController_1 = require("../createStoreController");
const findWorkspacePackages_1 = require("../findWorkspacePackages");
const requireHooks_1 = require("../requireHooks");
const recursive_1 = require("./recursive");
const OVERWRITE_UPDATE_OPTIONS = {
allowNew: true,
update: false,
};
/**
* Perform installation.
* @example
* installCmd([ 'lodash', 'foo' ], { silent: true })
*/
function installCmd(input, opts) {
return __awaiter(this, void 0, void 0, function* () {
// `pnpm install ""` is going to be just `pnpm install`
input = input.filter(Boolean);
const prefix = opts.prefix || process.cwd();
const localPackages = opts.linkWorkspacePackages && opts.workspacePrefix
? findWorkspacePackages_1.arrayOfLocalPackagesToMap(yield findWorkspacePackages_1.default(opts.workspacePrefix))
: undefined;
if (!opts.ignorePnpmfile) {
opts.hooks = requireHooks_1.default(prefix, opts);
}
const store = yield createStoreController_1.default(opts);
const installOpts = Object.assign({}, opts, {
// In case installation is done in a multi-package repository
// The dependencies should be built first,
// so ignoring scripts for now
ignoreScripts: !!localPackages || opts.ignoreScripts, localPackages, store: store.path, storeController: store.ctrl });
if (!input || !input.length) {
yield supi_1.install(installOpts);
}
else {
yield supi_1.installPkgs(input, installOpts);
}
if (opts.linkWorkspacePackages && opts.workspacePrefix) {
// TODO: reuse somehow the previous read of packages
// this is not optimal
const allWorkspacePkgs = yield findWorkspacePackages_1.default(opts.workspacePrefix);
yield recursive_1.recursive(allWorkspacePkgs, [], Object.assign({}, opts, OVERWRITE_UPDATE_OPTIONS, { ignoredPackages: new Set([prefix]), packageSelectors: [
{
matcher: prefix,
scope: 'dependencies',
selectBy: 'location',
},
] }), 'install', 'install');
if (opts.ignoreScripts)
return;
yield supi_1.rebuild(Object.assign({}, opts, { pending: true })); // tslint:disable-line:no-any
}
});
}
exports.default = installCmd;
//# sourceMappingURL=install.js.map