我怎样才能将一个 Zip 传送到另一个 Zip
How can I pipe a Zip into another Zip
我需要将一组特定的文件夹和文件压缩到一个名为 Resources.zip 的文件中,然后将压缩包嵌套在一个名为 Install.zip.
的最终压缩包中
这是我所拥有的,我不知道为什么第一次合并没有显示在最终的 zip 中。
var gulp = require('gulp'),
msbuild = require('gulp-msbuild'),
nugetRestore = require('gulp-nuget-restore'),
cleanCSS = require('gulp-clean-css'),
uglify = require('gulp-uglify'),
assemblyInfo = require('gulp-dotnet-assembly-info'),
config = require('./package.json'),
zip = require('gulp-zip'),
filter = require('gulp-filter'),
merge = require('merge2'),
markdown = require('gulp-markdown'),
rename = require('gulp-rename'),
gutil = require('gulp-util'),
path = require('path');
gulp.task('packageInstall', function() {
var packageName = config.dnnModule.fullName + '_' + config.version;
var jsFilter = filter(['**/js/*.js', '!**/js/*.min.js'], { restore: true });
var cssFilter = filter(['**/*.css'], { restore: true });
return merge(
merge(
gulp.src([
config.dnnModule.pathToPublish + '/**/{*.png,*.gif,*.svn,*.jpg}',
config.dnnModule.pathToPublish + '/**/*.cshtml',
config.dnnModule.pathToPublish + '/**/{*.aspx,*.ascx,*.asmx}',
config.dnnModule.pathToPublish + '/**/*.css',
config.dnnModule.pathToPublish + '/**/{*,htm,*.html}',
config.dnnModule.pathToPublish + '/**/*.resx',
config.dnnModule.pathToPublish + '/**/*.js',
config.dnnModule.pathToPublish + '/**/*.txt',
'!' + config.dnnModule.pathToPublish + '/**/web.config',
'!' + config.dnnModule.pathToPublish + '/**/gulpfile.js',
'!' + config.dnnModule.pathToPublish + '/**/{bin,bin/**}',
'!' + config.dnnModule.pathToPublish + '/**/{Providers,Providers/**}'
])
.pipe(cssFilter)
.pipe(cleanCSS())
.pipe(cssFilter.restore)
.pipe(jsFilter)
.pipe(uglify().on('error', gutil.log))
.pipe(jsFilter.restore)
)
.pipe(zip('Resources.zip')),
gulp.src([
config.dnnModule.pathToPublish + '/**/TestMvs.dll',
config.dnnModule.pathToPublish + '/Providers/**/*.SqlDataProvider',
config.dnnModule.pathToPublish + '/License.txt',
config.dnnModule.pathToPublish + '/ReleaseNotes.txt'
]),
gulp.src(config.dnnModule.pathToSupplementaryFiles + '/ReleaseNotes.md')
.pipe(markdown())
.pipe(rename('ReleaseNotes.txt'))
)
.pipe(zip('Install.zip'))
.pipe(gulp.dest(config.dnnModule.packagesPath));
});
完成 运行 任务后,我得到一个 zip 文件,但它不包含来自第一个流的 resources.zip,它只包含来自第二个流的文件。我已经在它自己的任务中测试了第一个流并将文件写到磁盘,它在那个实例中正确地生成了 zip。我只是无法让它们筑巢。
我最终不得不从 merge2 包切换到 event-stream 包。在我这样做并将我的合并调用更新为 es.merge 之后,一切都开始工作了。
我需要将一组特定的文件夹和文件压缩到一个名为 Resources.zip 的文件中,然后将压缩包嵌套在一个名为 Install.zip.
的最终压缩包中这是我所拥有的,我不知道为什么第一次合并没有显示在最终的 zip 中。
var gulp = require('gulp'),
msbuild = require('gulp-msbuild'),
nugetRestore = require('gulp-nuget-restore'),
cleanCSS = require('gulp-clean-css'),
uglify = require('gulp-uglify'),
assemblyInfo = require('gulp-dotnet-assembly-info'),
config = require('./package.json'),
zip = require('gulp-zip'),
filter = require('gulp-filter'),
merge = require('merge2'),
markdown = require('gulp-markdown'),
rename = require('gulp-rename'),
gutil = require('gulp-util'),
path = require('path');
gulp.task('packageInstall', function() {
var packageName = config.dnnModule.fullName + '_' + config.version;
var jsFilter = filter(['**/js/*.js', '!**/js/*.min.js'], { restore: true });
var cssFilter = filter(['**/*.css'], { restore: true });
return merge(
merge(
gulp.src([
config.dnnModule.pathToPublish + '/**/{*.png,*.gif,*.svn,*.jpg}',
config.dnnModule.pathToPublish + '/**/*.cshtml',
config.dnnModule.pathToPublish + '/**/{*.aspx,*.ascx,*.asmx}',
config.dnnModule.pathToPublish + '/**/*.css',
config.dnnModule.pathToPublish + '/**/{*,htm,*.html}',
config.dnnModule.pathToPublish + '/**/*.resx',
config.dnnModule.pathToPublish + '/**/*.js',
config.dnnModule.pathToPublish + '/**/*.txt',
'!' + config.dnnModule.pathToPublish + '/**/web.config',
'!' + config.dnnModule.pathToPublish + '/**/gulpfile.js',
'!' + config.dnnModule.pathToPublish + '/**/{bin,bin/**}',
'!' + config.dnnModule.pathToPublish + '/**/{Providers,Providers/**}'
])
.pipe(cssFilter)
.pipe(cleanCSS())
.pipe(cssFilter.restore)
.pipe(jsFilter)
.pipe(uglify().on('error', gutil.log))
.pipe(jsFilter.restore)
)
.pipe(zip('Resources.zip')),
gulp.src([
config.dnnModule.pathToPublish + '/**/TestMvs.dll',
config.dnnModule.pathToPublish + '/Providers/**/*.SqlDataProvider',
config.dnnModule.pathToPublish + '/License.txt',
config.dnnModule.pathToPublish + '/ReleaseNotes.txt'
]),
gulp.src(config.dnnModule.pathToSupplementaryFiles + '/ReleaseNotes.md')
.pipe(markdown())
.pipe(rename('ReleaseNotes.txt'))
)
.pipe(zip('Install.zip'))
.pipe(gulp.dest(config.dnnModule.packagesPath));
});
完成 运行 任务后,我得到一个 zip 文件,但它不包含来自第一个流的 resources.zip,它只包含来自第二个流的文件。我已经在它自己的任务中测试了第一个流并将文件写到磁盘,它在那个实例中正确地生成了 zip。我只是无法让它们筑巢。
我最终不得不从 merge2 包切换到 event-stream 包。在我这样做并将我的合并调用更新为 es.merge 之后,一切都开始工作了。