GULP

2015-12-08 15 views
5

से जेएस फ़ाइल में परिवर्तनीय मान को इंजेक्ट कैसे करें उम्मीद है कि यह एक त्वरित प्रश्न है।GULP

जो मैं करने की कोशिश कर रहा हूं वह एक जेएस फ़ाइल में जावास्क्रिप्ट ऑब्जेक्ट में टाइमस्टैम्प जोड़ने के लिए है, जबकि फ़ाइल को GULP के साथ बनाया जा रहा है। असल में, "file.js" में, मेरे पास एक ऑब्जेक्ट है जहां मैं ऑब्जेक्ट रखना चाहता हूं। टाइम स्टाम्प जो GULP बिल्ड के समय के बराबर है।

मैं वर्तमान में गल्प-हेडर का उपयोग कर फ़ाइल के शीर्ष पर एक टाइमस्टैम्प जोड़ रहा हूं, लेकिन मुझे ऑब्जेक्ट में किसी संपत्ति में टाइमस्टैंप जोड़ने के लिए कहा गया है।

मेरा विचार गुलप से मूल्य इंजेक्ट करना था, लेकिन अब तक मिले सभी इंजेक्शन प्लगइन्स एक फ़ाइल की सामग्री को लक्ष्य फ़ाइल में इंजेक्शन देने के लिए हैं।

किसी भी मदद की सराहना की जाएगी।

उत्तर

8

क्या आप किसी भी प्रकार के मॉड्यूल का उपयोग कर रहे हैं? ईएस 6 मॉड्यूल, एएमडी, कॉमनजेएस, ...?

यदि हां, तो आप Gulp साथ एक config मॉड्यूल जहां इंजेक्षन कर सकते हैं किसी भी चर आप चाहते हैं उत्पन्न कर सकते हैं। यह कुछ इस तरह दिखेगा:

config.tmpl.js

module.exports = <%= config %> 

config घूंट कार्य

var gulp = require('gulp'); 
var template = require('gulp-template'); 
var rename = require('gulp-rename'); 

gulp.task('config', function() { 
    return gulp.src('path/to/config.tmpl.js') 
    .pipe(template({config: JSON.stringify({ 
     timeStamp: new Date() 
    })})) 
    .pipe(rename('config.js')) 
    .pipe(gulp.dest('path/to/config.js')); 
}); 

और अंत में, अपने जे एस फ़ाइल में

var config = require('path/to/config.js'); 

var object = { 
    timeStamp: config.timeStamp 
} 
1

ओ.के., इसलिए मैंने एक कामकाज निकाला जो मुझे प्राप्त करता है जहां मैं बनना चाहता हूं।

Gulp में: पहली बार इस इस कोड का उपयोग मेरी जावास्क्रिप्ट फ़ाइल में एक चर घोषणा डालने के लिए घूंट हेडर उपयोग कर रहा है तो फिर

var d = new Date(); 
    .pipe(header("var timeStamp = '" + d +"';")) 

, मेरी जावास्क्रिप्ट फ़ाइल में, मैं एक संपत्ति में सेट ऑब्जेक्ट जो एक फ़ंक्शन है, और उस टाइमस्टैम्प प्रॉपर्टी को सेट करता है जिसे मैं समय-समय पर मूल्य प्राप्त करके ढूंढ रहा था, गलप-हेडर का उपयोग करके ऊपर इंजेक्शन दिया गया था:

जेएस फ़ाइल में, हेडर कार्यक्षमता यह सम्मिलित करती है:

var timeStamp = 'Tue Dec 08 2015 15:15:11 GMT-0800 (PST)'; 

और फिर मेरी समारोह, जे एस वस्तु में बस यह है:

ts: function(){ 
    object.timeStamp = timeStamp; 
    }, 

कौन सा है, जब कहा जाता है, चलता है और वस्तु के अंदर टाइमस्टैम्प सेट।

ऐसा लगता है कि ऐसा करने का एक आसान तरीका होना चाहिए, लेकिन अभी के लिए, यह काम कर रहा है।

यदि आपके पास इसे बेहतर बनाने के बारे में कोई विचार है, तो मुझे उन्हें सुनना अच्छा लगेगा!