Skip to content

Commit a955a0b

Browse files
committed
add shrinkwrap and nice-package tasks
1 parent 5f0721f commit a955a0b

File tree

5 files changed

+2090
-23
lines changed

5 files changed

+2090
-23
lines changed

gulpfile.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ var gulp = require('gulp'),
44
jshint = require('gulp-jshint'),
55
stylish = require('jshint-stylish'),
66
gutil = require('gulp-util'),
7-
mocha = require('gulp-mocha');
7+
mocha = require('gulp-mocha'),
8+
shrinkwrap = require('gulp-shrinkwrap'),
9+
nicePackage = require('gulp-nice-package');
810

911
require('gulp-help')(gulp);
1012

@@ -57,4 +59,11 @@ gulp.task('watch', function () {
5759
], ['test-watch']);
5860
});
5961

60-
gulp.task('ci', 'Run all tests and lint.', ['test']);
62+
gulp.task('ci', 'Run all tests and lint.', ['test']);
63+
64+
gulp.task('shrinkwrap', 'Cleans package.json deps and generates npm-shrinkwrap.json', function () {
65+
return gulp.src('package.json')
66+
.pipe(nicePackage())
67+
.pipe(shrinkwrap())
68+
.pipe(gulp.dest('./'));
69+
});

index.js

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ var gutil = require('gulp-util'),
1313
fs = require('fs'),
1414
open = require('gulp-open'),
1515
path = require('path'),
16-
spawn = require('child_process').spawn;
16+
spawn = require('child_process').spawn,
17+
mapstream = require('map-stream'),
18+
nicePackage = require('gulp-nice-package'),
19+
shrinkwrap = require('gulp-shrinkwrap');
1720

1821
/**
1922
* Assigns default tasks to your gulp instance
@@ -63,6 +66,13 @@ module.exports = function (gulp, options) {
6366
complexity: {
6467
destDir: './target/complexity',
6568
options: {} // https://github.com/philbooth/complexity-report#command-line-options
69+
},
70+
nicePackage: {
71+
spec: 'npm',
72+
options: {
73+
warnings: false,
74+
recommendations: false
75+
}
6676
}
6777
};
6878

@@ -312,11 +322,40 @@ module.exports = function (gulp, options) {
312322

313323
});
314324

325+
// ----------------
326+
// shrinkwrap
327+
// ----------------
328+
329+
function validatePackageJson() {
330+
return gulp.src('package.json')
331+
.pipe(nicePackage(gulp.options.nicePackage.spec, gulp.options.nicePackage.options));
332+
}
333+
334+
gulp.task('nice-package', 'Validates package.json', function () {
335+
var isValid = true;
336+
return validatePackageJson()
337+
.pipe(mapstream(function (file, cb) {
338+
isValid = file.nicePackage.valid;
339+
cb(null, file);
340+
}))
341+
.on('end', function () {
342+
if (!isValid) {
343+
process.emit('exit');
344+
}
345+
});
346+
});
347+
348+
gulp.task('shrinkwrap', 'Cleans package.json deps and generates npm-shrinkwrap.json', function () {
349+
return validatePackageJson()
350+
.pipe(shrinkwrap())
351+
.pipe(gulp.dest('./'));
352+
});
353+
315354
// ----------------
316355
// combo tasks
317356
// ----------------
318357

319-
gulp.task('ci', 'Lint, tests and test coverage', ['lint', 'felint', 'test-cover']);
358+
gulp.task('ci', 'Lint, tests and test coverage', ['lint', 'felint', 'test-cover', 'nice-package']);
320359

321360
function getTestAndLintPaths() {
322361
var paths = gulp.options.paths.lint.concat(gulp.options.paths.test);

0 commit comments

Comments
 (0)