Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使吞咽';s fs.readFileSync是否先获取内容,然后在gulp.src上使用其数据?_Javascript_Gulp - Fatal编程技术网

Javascript 如何使吞咽';s fs.readFileSync是否先获取内容,然后在gulp.src上使用其数据?

Javascript 如何使吞咽';s fs.readFileSync是否先获取内容,然后在gulp.src上使用其数据?,javascript,gulp,Javascript,Gulp,我试图通过引用一个名为config.php的外部文件,将所有插件js文件连接成一个,该文件存储了所有必需的脚本 但是,在执行此操作时,遇到了一个问题,因为在fs.readFile完成读取文件并更新数组之前,gulp.src函数将首先使用空数组“arrayFiles”运行 // gulp.js (attempt #1) var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); var fs = requir

我试图通过引用一个名为config.php的外部文件,将所有插件js文件连接成一个,该文件存储了所有必需的脚本

但是,在执行此操作时,遇到了一个问题,因为在fs.readFile完成读取文件并更新数组之前,gulp.src函数将首先使用空数组“arrayFiles”运行

// gulp.js (attempt #1)

var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var fs = require("fs");
var arrayFiles = new Array();
gulp.task('compressAllPlugins', function(done) {
    arrayFiles =[
        'public/assets/libs/jquery/dist/jquery.min.js',
        'public/assets/libs/angular/angular.js',
        'public/assets/libs/angular-ui-router/release/angular-ui-router.min.js'
    ];

    gulp.src(arrayFiles)
    .pipe(plugins.uglify().on('error', standardHandler))
    .pipe(concat('myplugins.min.js'))
    .pipe(gulp.dest('public/app'))
    .on('end', done); 
    });
});
一些代码如下所示

// gulp.js

var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var fs = require("fs");
var arrayFiles = new Array();
gulp.task('compressAllPlugins', function(done) {
    fs.readFile('path/to/config.php', {encoding: 'utf-8', flag: 'rs'}, function(e, data) {
        if (e) return console.log(e);
        // codes to process content and convert it into array
        // arrayFiles.push(eachData);
    }
    console.log('arrayFiles: ',arrayFiles);
    gulp.src(arrayFiles)
    .pipe(plugins.uglify().on('error', standardHandler))
    .pipe(concat('myplugins.min.js'))
    .pipe(gulp.dest('public/app'))
    .on('end', done); 
    });
});
下面的代码显示了config.php的内容

// config.php

<?php
return [
    'scripts' =>[
        'assets/libs/jquery/dist/jquery.min.js',
        'assets/libs/angular/angular.js',
        'assets/libs/angular-ui-router/release/angular-ui-router.min.js'
    ]
];
但是,myplugins.min.js不是基于数组生成的

// gulp.js (attempt #1)

var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var fs = require("fs");
var arrayFiles = new Array();
gulp.task('compressAllPlugins', function(done) {
    arrayFiles =[
        'public/assets/libs/jquery/dist/jquery.min.js',
        'public/assets/libs/angular/angular.js',
        'public/assets/libs/angular-ui-router/release/angular-ui-router.min.js'
    ];

    gulp.src(arrayFiles)
    .pipe(plugins.uglify().on('error', standardHandler))
    .pipe(concat('myplugins.min.js'))
    .pipe(gulp.dest('public/app'))
    .on('end', done); 
    });
});
问题:如何使gulp.src在fs.readFile更新阵列文件后运行?或者其他解决方法

尝试:

gulp.task中的硬编码阵列文件(不使用fs.readFile)将读取插入阵列中的相应文件

// gulp.js (attempt #1)

var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var fs = require("fs");
var arrayFiles = new Array();
gulp.task('compressAllPlugins', function(done) {
    arrayFiles =[
        'public/assets/libs/jquery/dist/jquery.min.js',
        'public/assets/libs/angular/angular.js',
        'public/assets/libs/angular-ui-router/release/angular-ui-router.min.js'
    ];

    gulp.src(arrayFiles)
    .pipe(plugins.uglify().on('error', standardHandler))
    .pipe(concat('myplugins.min.js'))
    .pipe(gulp.dest('public/app'))
    .on('end', done); 
    });
});
这段代码能够根据所有glob的需要生成myplugins.min.js,但它没有读取我的config.php文件。

Ahh发现了我的错误:

在多次检查代码后,发现它确实读取了更新的数组,只是所检索的数据中没有“public”目录,因此不会生成myplugins.min.js

// gulp.js

arrayFiles.push('public/'+eachData);