Pregunta Importar / leer variable del archivo gulp separado


Estoy buscando dividir mi gulpfile.js assets o src variables en archivos separados para que pueda administrarlos mejor. Por ejemplo:

....

var scripts = ['awful.js', 'lot.js', 'of.js', 'js.js', 'files.js']

....(somewhere down the line)

gulp.task('vendorjs', function() {
    return gulp.src(scripts)

        .pipe(concat('vendor.js'))
        .pipe(rename({suffix: '.min'}))
        .pipe(uglify())
        .pipe(gulp.dest(paths.root + 'dist'))
        .pipe(notify({ message: 'vendorjs task completed' }));
});

Entonces, básicamente, lo que me interesa es si hay una forma de pasar a un archivo separado. scripts variable y poder acceder desde gulpfile.js.

He estado buscando algo así como:

require("fs").readFile('gulp/test.js', function(e, data) {
   //(test.js would be the file that holds the scripts var)
});

Howerver mientras lee el contenido del archivo, todavía no puedo acceder desde el gulpfile.js. Cualquier consejo o idea es muy apreciado.


6
2017-08-04 08:09


origen


Respuestas:


Node.js le permite importar otros archivos usando require(). Es compatible tres tipos de archivos:

  • Archivos JSON. Ver La respuesta de DavidDomain para eso.
  • Complementos Binary Node.js. No es útil para su caso de uso.
  • Archivos JavaScript Eso es lo que quieres.

Para archivos JavaScript, el valor devuelto por require() es el que está asignado a module.exports en el archivo importado

Entonces para su caso de uso:

gulp / test.js

var arrayOfFiles = ["awful.js", "lots.js"];
arrayOfFiles.push("of.js");
arrayOfFiles.push("js.js");
arrayOfFiles.push("files.js");
for (var i = 0; i < 10; i++) {
  arrayOfFiles.push("some_other_file" + i + ".js");       
}

module.exports = {
  scripts: arrayOfFiles
};

gulpfile.js

var test = require('gulp/test.js');

gulp.task('vendorjs', function() {
  return gulp.src(test.scripts)
    .pipe(concat('vendor.js'))
    .pipe(rename({suffix: '.min'}))
    .pipe(uglify())
    .pipe(gulp.dest(paths.root + 'dist'))
    .pipe(notify({ message: 'vendorjs task completed' }));
});

9
2017-08-11 10:18



Puede usar un archivo json para almacenar sus activos o la ubicación del archivo de origen y cargarlo en su archivo gulp.

Por ejemplo:

// config.json

{
  "scripts": ["awful.js", "lot.js", "of.js", "js.js", "files.js"]
}

Y en tu archivo trago harías

// gulpfile.js

var config = require('./config');

var scripts = config.scripts;

console.log(scripts);

3
2017-08-04 08:23