2016-08-04 17 views
5

gulpfile.js assetsまたはsrc変数を別々のファイルに分割して、より良い管理ができるようにしたいと考えています。たとえば、次のように別のgulpファイルから変数をインポート/読み込み

.... 

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' })); 
}); 

ので仕方が実際にtheresの別のファイルにscripts変数を移動し、gulpfile.jsからアクセスできるようにする場合、私は基本的に興味がどのような。私のような何かに見てきた

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

Howerverそれはファイルの内容を読み取るんが、私はまだgulpfile.jsからアクセスすることはできません。あらゆるヒントやアイデアを高く評価します。

答えて

7

のNode.jsを行うだろうが、あなたはrequire()を使用して他のファイルをインポートすることができます。それは、three types of files

  • JSONファイルをサポートしています。それについてはDavidDomain's answerを参照してください。
  • バイナリNode.jsアドオン。あなたのユースケースには役に立ちません。
  • JavaScriptファイル。それはあなたが望むものです。

JavaScriptファイルの場合、require()から返された値は、インポートされたファイルのmodule.exportsに割り当てられた値です。ご使用のケースのためにそう

一気/事は、ファイルがより複雑になることである

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' })); 
}); 
+0

正しいことについて聞こえて、それをテストして、うまくいった。ありがとう! (20時間以内に奨励金が送られます:)) – RGLSV

2

jsonファイルを使用してアセットまたはソースファイルの場所を格納し、gulpファイルにロードすることができます。例えば

// config.json 

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

そして、あなたのゴクゴクファイルにあなたが

// gulpfile.js 

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

var scripts = config.scripts; 

console.log(scripts); 
+0

をtest.jsそれは、 'var scripts = {main:['some-script]、notmain:[' etc ']}'のような 'オブジェクト'のようなものです。私は、しかし、ショットを与えるつもり、それがどのように動作するかを確認します。ありがとう! – RGLSV

+0

JSONはJavaScriptから派生しているので、必要に応じてオブジェクトに解析できるきわめて複雑な構造を構築できるはずです。有効なjson構文を使用している限り。 – DavidDomain

+0

ええ、私はそのファイルにもっと動的なアプローチをしているので、 '.js'ファイルを求めていたのです。おそらく 'forループ'を渡して最終的な出力を '動的に'ビルドするようなものです - 単語や正しい単語があるかどうかわからない:D – RGLSV

関連する問題