如何让gulp的fs.readFileSync首先获取内容然后在gulp.src上使用它的数据?

时间:2015-08-10 02:22:54

标签: javascript gulp

我试图通过引用一个名为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文件。

1 个答案:

答案 0 :(得分:0)

啊,啊,我发现了我的错误:

在对代码进行多次审查后发现,它已经阅读了更新的数组,只是被检索的数据没有“公共”数据。因此,目录中没有生成myplugins.min.js。

// gulp.js

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