2

在以下代码段中, 的输入和输出将是 .pipe(gulpIf('*.css', cssnano()))什么?

gulp.task('useref', function(){
  return gulp.src('app/*.html')
    .pipe(useref())
    .pipe(gulpIf('*.js', uglify()))
    .pipe(gulpIf('*.css', cssnano()))
    .pipe(gulp.dest('dist'))
}); 

API docs(链接)说.pipe(destination)返回对目标流的引用以设置链,如果是这样,.pipe(gulpIf('*.js', uglify()))会将流返回到缩小的 .js 文件,如何通过管道传输到.pipe(gulpIf('*.css', cssnano()))

4

1 回答 1

1

Gulp 只是一个具有相当简单的基本功能的任务运行器。它的力量来自广泛的第三方包生态系统,您自己的代码片段至少使用了四个。我说四个是因为这就是你的gulpfile.js源代码中显示的内容;gulp 本身有13 个直接运行时依赖项

"dependencies": {
    "archy": "^1.0.0",
    "chalk": "^1.0.0",
    "deprecated": "^0.0.1",
    "gulp-util": "^3.0.0",
    "interpret": "^1.0.0",
    "liftoff": "^2.1.0",
    "minimist": "^1.1.0",
    "orchestrator": "^0.3.0",
    "pretty-hrtime": "^1.0.0",
    "semver": "^4.1.0",
    "tildify": "^1.0.0",
    "v8flags": "^2.0.2",
    "vinyl-fs": "^0.3.0"
},

...以及类似数量的直接开发依赖项。

gulp 传递的流由vinyl-fs提供,不代表单个文件,而是一个虚拟文件系统。

至于您的代码,您肯定只从 HTML 文件开始:

gulp.src('app/*.html')

...但在此之后,您执行了一个名为gulp-useref的第三方包:

.pipe(useref())

根据其文档:

将解析 HTML 中的构建块,替换它们并通过. 构建块内的资产也将被连接并 在流中传递

换句话说,它解析 HTML 文件以识别/生成资产文件,并将它们添加到流中以进行进一步处理。

于 2017-05-19T11:21:55.997 回答