gulp.src() 没有读取所需的 JSON 文件的数组值

Posted

技术标签:

【中文标题】gulp.src() 没有读取所需的 JSON 文件的数组值【英文标题】:gulp.src() not reading required JSON file's array values 【发布时间】:2015-10-13 06:57:35 【问题描述】:

我正在尝试让 gulp.src() 从数组中流式传输文件,因此我可以使用 gulp-inject 将它们写入我的 index.html 文件。下面列出的是我的 gulp.config.json 文件,它将保存我的项目中包含的包的文件路径。


    "vendorjs": [
        "jquery/dist/jquery.min.js",
        "angular/angular.js",
        "ng-token-auth/dist/ng-token-auth.js",
        "angular-bootstrap/ui-bootstrap-tpls.min.js",
        "ngInfiniteScroll/build/ng-infinite-scroll.min.js",
        "js/vendor/angular-ui-tour.js",
        "spin.js/spin.js",
        "angular-spinner/angular-spinner.min.js",
        "angular-scroll/angular-scroll.js"
    ],
    "js": [
        "js/app.js",
        "js/directives.js",
        "js/services.js",
        "js/filters.js"
    ]

出于调试目的,我的 gulpfile.js 看起来像这样Gulpfile.js

var gulp = require('gulp'),
    inject = require('gulp-inject'),
    paths = require('./gulp.config.json'),
    debug = require('gulp-debug');

gulp.task('default', function() 
    gulp.src(paths.vendorjs).pipe(debug());
);

它似乎只输出到控制台:gulp-debug: js/vendor/angular-ui-tour.js 除非我像这样将paths.vendorjs 切换到paths.jsgulp.src(paths.js).pipe(debug()) 然后我得到 js 数组中每个文件的输出

gulp-debug: js/app.js
gulp-debug: js/directives.js
gulp-debug: js/services.js
gulp-debug: js/filters.js

有人能解释一下为什么会这样吗?

【问题讨论】:

【参考方案1】:

很可能除了显示的文件之外的所有文件的路径都不正确,因此它们不会进入管道。您可以使用 gulp-expect-file 之类的东西来检查是否所有文件都已进入管道。

【讨论】:

那么数组中的路径实际上必须匹配项目中的文件?我的印象是这将是一个“路径中的路径”情况,因为除了使用它们的名称之外,我实际上并没有对路径做任何事情。 是的,这些文件必须存在于那个位置,gulp 将获取这些文件并通过一系列转换运行它们,然后使用 gulp.dest 写入它们。如果文件不存在,则不会发生任何事情。 有没有办法让 gulp 忽略查找它们而只使用名称,还是我必须在我的所有文件路径中添加 ../../components/bower_components 它确实忽略了它们,它们没有发生任何事情。 gulp.src 旨在获取文件列表,它不能获取字符串列表。但是你想要完成什么?您使用 gulp 的主要目标是什么?

以上是关于gulp.src() 没有读取所需的 JSON 文件的数组值的主要内容,如果未能解决你的问题,请参考以下文章

Json 没有以所需的模式返回正确的值

webservice的输出没有使用alamofire快速提供所需的json

Python多线程未获得所需的性能

使用Gulp将所有bower包字体文件复制到build目录

jq --stream 解析 json 所需的帮助

如何在 package.json 中指定所需的 Node.js 版本?