Skip to content

Instantly share code, notes, and snippets.

@andreineculau
Created September 18, 2017 14:15
Show Gist options
  • Save andreineculau/f7f0e04d990df8992f688e004b4b738b to your computer and use it in GitHub Desktop.
Save andreineculau/f7f0e04d990df8992f688e004b4b738b to your computer and use it in GitHub Desktop.
pnpmfile.js to lock js-beautify to 1.6.4 across all dependencies as a workaround to https://github.com/beautify-web/js-beautify/issues/1247
let semver = require('/usr/local/lib/node_modules/npm/node_modules/semver');
let lockJsBeautifier = function(name, version, {deps, _depsName, pkg}) {
if (name !== 'js-beautify') {
return;
}
if (!semver.satisfies('1.7.0', version)) {
return;
}
console.log(`Locking ${pkg.name}@${pkg.version}'s ${name} dependency from ${version} to 1.6.4.`);
deps[name] = '1.6.4';
};
let depsForEach = function(pkg, fun) {
let depsNames = [
'dependencies',
'devDependencies'
];
depsNames.forEach(function(depsName) {
if (!pkg[depsName]) {
return;
}
let keys = Object.keys(pkg[depsName]);
keys.forEach(function(key) {
fun(key, pkg[depsName][key], {
deps: pkg[depsName],
depsName,
pkg
});
});
});
};
let readPackage = function(pkg) {
depsForEach(pkg, lockJsBeautifier);
return pkg;
};
exports.hooks = {
readPackage
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment