Node.js と npm を使用してビルド時に特定のファイルを自動的に圧縮する方法はありますか?
たとえば、プロジェクトがあり、そのファイル構造は次のようになります。
Project/
--lib/
--node_modules/
--test/
--index.js
--package.json
たとえば、lib フォルダー、node_modules および index.js の特定のモジュールをいくつかの zip アーカイブに圧縮して、AWS Lambda にアップロードできるようにしたいと考えています。テスト フォルダーやテスト Node.js モジュール (mocha と chai) を圧縮する必要はありません。zip ファイルを生成するための bash スクリプトも作成しましたが、「npm install」が呼び出されたときにこのスクリプトを自動的に実行する方法はありますか?
これは標準的な問題であり、標準的な解決策があるはずですが、そのようなものを見つけることができませんでした。
アップデート
michael のおかげで、gulp を使うことにしました。これは、AWS Lambda で他の誰かが必要とする場合に備えて、私のスクリプトです。
var gulp = require('gulp');
var clean = require('gulp-clean');
var zip = require('gulp-zip');
var merge = require('merge-stream');
gulp.task('clean', function () {
var build = gulp.src('build', {read: false})
.pipe(clean());
var dist = gulp.src('dist', {read: false})
.pipe(clean());
return merge(build, dist);
});
gulp.task('build', function() {
var index = gulp.src('index.js')
.pipe(gulp.dest('build'));
var lib = gulp.src('lib/**')
.pipe(gulp.dest('build/lib'));
var async = gulp.src('node_modules/async/**')
.pipe(gulp.dest('build/node_modules/async'));
var collections = gulp.src('node_modules/collections/**')
.pipe(gulp.dest('build/node_modules/collections'));
var underscore = gulp.src('node_modules/underscore/**')
.pipe(gulp.dest('build/node_modules/underscore'));
var util = gulp.src('node_modules/util/**')
.pipe(gulp.dest('build/node_modules/util'));
var xml2js = gulp.src('node_modules/xml2js/**')
.pipe(gulp.dest('build/node_modules/xml2js'));
return merge(index, lib, async, collections, underscore, util, xml2js);
});
gulp.task('zip', ['build'], function() {
return gulp.src('build/*')
.pipe(zip('archive.zip'))
.pipe(gulp.dest('dist'));
});
gulp.task('default', ['zip']);