2016-08-04 9 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' })); 
}); 

तो क्या मैं मूल रूप से इसमें रुचि है, तो थेरेस एक तरह से वास्तव में 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 देखें।
  • बाइनरी नोड.जेएस एडॉन्स। आपके उपयोग के मामले के लिए उपयोगी नहीं है।
  • जावास्क्रिप्ट फाइलें। ये वही है जो आप चाहते हो।

जावास्क्रिप्ट फ़ाइलों के लिए require() से लौटाया गया मान वह है जो आयातित फ़ाइल में module.exports को सौंपा गया है।

आपके उपयोग के मामले के लिए

तो:

घूंट/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' })); 
}); 
+0

सही के बारे में लगता है, इसे परीक्षण किया और एक ठीक काम किया। धन्यवाद! (20 घंटों में बक्षीस भेजा जाएगा :)) – RGLSV

2

आप अपनी संपत्ति या स्रोत फ़ाइल स्थान को स्टोर करने और अपनी गल्प फ़ाइल में लोड करने के लिए एक जेसन फ़ाइल का उपयोग कर सकते हैं।

उदाहरण के लिए:

// 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

बात यह है कि फ़ाइल की तुलना में अधिक जटिल हो जाएगा है कि, एक 'ऑब्जेक्ट' की तरह अधिक: 'var scripts = {main: ['some-script], notmain: [' etc ']}'। हालांकि मैं एक शॉट देने वाला हूं, और देखें कि यह कैसे काम करता है। धन्यवाद! – RGLSV

+0

JSON जावास्क्रिप्ट से निकला है, इसलिए आपको बहुत जटिल संरचनाएं बनाने में सक्षम होना चाहिए जिन्हें आपकी आवश्यकताओं के अनुरूप किसी ऑब्जेक्ट पर पार्स किया जा सकता है। जब तक आप वैध जेसन सिंटैक्स का उपयोग करते हैं। – DavidDomain

+0

अच्छी तरह से हाँ, हालांकि मैं उस फ़ाइल पर एक और 'गतिशील' दृष्टिकोण के लिए जाना जाता हूं, इसलिए मैं एक '.js' फ़ाइल के लिए पूछ रहा था; जैसे कि 'लूप के लिए' गुजरना और अंतिम आउटपुट 'गतिशील रूप से' बनाना - सुनिश्चित नहीं है कि यह एक शब्द और/या सही शब्द है: डी – RGLSV