【问题标题】:How to extract zip file with gulp如何使用 gulp 提取 zip 文件
【发布时间】:2014-01-30 11:22:17
【问题描述】:

这是我的 gulpfile.js

var gulp = require('gulp');
var download = require('gulp-download');
var unzip = require('unzip');

gulp.task('download-selenium', function(){
  download('https://selenium.googlecode.com/files/selenium-server-2.39.0.zip')
    .pipe(unzip.Extract({ path: 'selenium' }))
    .pipe(gulp.dest("selenium"));
});

当我启动它时,我遇到了以下问题:

$ gulp download-selenium
[gulp] Using file /Users/toutpt/makina/nmd/carteeco/mockup/gulpfile.js
[gulp] Working directory changed to /Users/toutpt/makina/nmd/carteeco/mockup
[gulp] Running 'download-selenium'...
[gulp] Errored 'download-selenium' in 9.08 ms Cannot pipe. Not readable.

/Users/toutpt/makina/nmd/carteeco/mockup/node_modules/gulp/node_modules/orchestrator/index.js:153
            throw err;
                  ^
Error: Cannot pipe. Not readable.
    at Extract.Writable.pipe (_stream_writable.js:125:22)
    at Gulp.gulp.task.server (/Users/toutpt/makina/nmd/carteeco/mockup/gulpfile.js:99:6)
    at module.exports (/Users/toutpt/makina/nmd/carteeco/mockup/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:31:7)
    at Gulp.Orchestrator._runTask (/Users/toutpt/makina/nmd/carteeco/mockup/node_modules/gulp/node_modules/orchestrator/index.js:273:3)
    at Gulp.Orchestrator._runStep (/Users/toutpt/makina/nmd/carteeco/mockup/node_modules/gulp/node_modules/orchestrator/index.js:214:10)
    at Gulp.Orchestrator.start (/Users/toutpt/makina/nmd/carteeco/mockup/node_modules/gulp/node_modules/orchestrator/index.js:134:8)
    at Gulp.run (/Users/toutpt/makina/nmd/carteeco/mockup/node_modules/gulp/index.js:20:14)
    at /usr/local/lib/node_modules/gulp/bin/gulp.js:132:19
    at process._tickCallback (node.js:415:13)
    at Function.Module.runMain (module.js:499:11)

那么我怎样才能提取我下载的文件呢?

【问题讨论】:

  • 我的回复是否回答了您的问题?如果是,请标记它:)

标签: gulp


【解决方案1】:

请记住,gulp 使用 Streams 作为文件。 npm unzip 不发送可管道流作为输出。

对于这种情况,您最好不要使用gulp.dest,而是使用解压缩解压缩路径。

试试这个:

var gulp = require('gulp');
var download = require('gulp-download');
var unzip = require('unzip');

gulp.task('download-selenium', function(){
  download('https://selenium.googlecode.com/files/selenium-server-2.39.0.zip')
    .pipe(unzip.Extract({ path: './selenium' }));
});

【讨论】:

    【解决方案2】:

    gulp-download 似乎不再维护了,gulp-gunzip 有一个更新的例子:

    var gulp = require('gulp')
    var request = require('request')
    var source = require('vinyl-source-stream')
    var gunzip = require('gulp-gunzip')
    var untar = require('gulp-untar')
    
    gulp.task('default', function () {
      return request('http://example.org/some-file.tar.gz')
      .pipe(source('some-file.tar.gz'))
      .pipe(gunzip())
      .pipe(untar())
      .pipe(gulp.dest('output'))
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2011-02-19
      • 2012-07-10
      • 1970-01-01
      相关资源
      最近更新 更多