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