chore(clean-shrinkwrap): add a utility to clean up the shrinkwrap file

This is to deal with https://github.com/npm/npm/issues/3581

See the previous commit for more info.

Closes #6672
This commit is contained in:
Peter Bacon Darwin
2014-03-13 18:30:17 +00:00
committed by Igor Minar
parent e5dd832b20
commit dd3587a8c1
3 changed files with 50 additions and 1 deletions

3
npm-shrinkwrap.json generated
View File

@@ -2713,6 +2713,9 @@
"shelljs": {
"version": "0.2.6"
},
"sorted-object": {
"version": "1.0.0"
},
"winston": {
"version": "0.7.2",
"dependencies": {

View File

@@ -54,7 +54,8 @@
"dgeni-packages": "^0.7.0",
"gulp-jshint": "~1.4.2",
"jshint-stylish": "~0.1.5",
"node-html-encoder": "0.0.2"
"node-html-encoder": "0.0.2",
"sorted-object": "^1.0.0"
},
"licenses": [
{

45
scripts/clean-shrinkwrap.js Executable file
View File

@@ -0,0 +1,45 @@
#!/usr/bin/env node
/**
* this script is just a temporary solution to deal with the issue of npm outputting the npm
* shrinkwrap file in an unstable manner.
*
* See: https://github.com/npm/npm/issues/3581
*/
var _ = require('lodash');
var sorted = require('sorted-object');
var fs = require('fs');
function cleanModule(module, name) {
// keep `from` and `resolve` properties for git dependencies, delete otherwise
if (!(module.resolved && module.resolved.match(/^git:\/\//))) {
delete module.from;
delete module.resolved;
}
if (name === 'chokidar') {
if (module.version === '0.8.1') {
delete module.dependencies;
} else {
throw new Error("Unfamiliar chokidar version (v" + module.version +
") , please check status of https://github.com/paulmillr/chokidar/pull/106");
}
}
_.forEach(module.dependencies, function(mod, name) {
cleanModule(mod, name);
});
}
console.log('Reading npm-shrinkwrap.json');
var shrinkwrap = require('./../npm-shrinkwrap.json');
console.log('Cleaning shrinkwrap object');
cleanModule(shrinkwrap, shrinkwrap.name);
console.log('Writing cleaned npm-shrinkwrap.json');
fs.writeFileSync('./npm-shrinkwrap.json', JSON.stringify(sorted(shrinkwrap), null, 2) + "\n");