我试图通过引用一个名为config.php的外部文件将所有插件js文件连接成一个文件,该文件存储了所有必需的脚本。
然而,在这样做时,遇到了一个问题,因为gulp.src函数将首先运行空数组" arrayFiles"在fs.readFile完成读取文件并更新数组之前。
有些代码如下所示
// 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'
]
];
下面的代码显示了config.php的内容
// output
arrayFiles: ['assets/libs/jquery/dist/jquery.min.js',
'assets/libs/angular/angular.js',
'assets/libs/angular-ui-router/release/angular-ui-router.min.js']
从上面的代码中,console.log提供了正确的数据数组,如下所示:
// 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);
});
});
但是myplugins.min.js不是基于数组生成的。
问题:如何让gulp.src在fs.readFile更新后运行arrayFiles?或任何其他解决方法?
尝试:
gulp.task中的hardcode arrayFiles并且不使用fs.readFile将读取插入到数组中的相应文件。
{{1}}
此代码能够根据需要生成myplugins.min.js,但不会读取我的config.php文件。
答案 0 :(得分:0)
在对代码进行多次审查后发现,它已经阅读了更新的数组,只是被检索的数据没有“公共”数据。因此,目录中没有生成myplugins.min.js。
// gulp.js
arrayFiles.push('public/'+eachData);