2012-09-13 7 views
12

पर पैकेज.जेसन सरणी में कैसे पास करें पैकेज.जेसन फ़ाइल से grunt.js को सरणी में पास करने का कोई तरीका है? मैंने कुछ अलग तरीकों की कोशिश की है और उनमें से कोई भी काम नहीं कर रहा है। मैं वर्तमान में है:grunt.js

/*global module:false*/ 
module.exports = function(grunt) { 

    // Project configuration. 
    grunt.initConfig({ 
    pkg: '<json:package.json>', 

    lint: { 
     files: '<%= pkg.lint.join(", ") %>' 
    } 

    // Default task 'lint qunit concat min' 
    grunt.registerTask('default', 'lint'); 
}; 

package.json

{ 
    "lint": [ 
       "grunt.js", 
       "test.js" 
      ] 
} 

एकमात्र समाधान है कि मैं खोजने के लिए सरणी के एक विशिष्ट सूचकांक में पारित करने के लिए है सक्षम किया गया है; जैसे <% = pkg.lint [0]%>। आपकी मदद के लिए अग्रिम धन्यवाद!

+2

आप का प्रयास किया था '<% = pkg.lint%>' बजाय? लिंट कार्य एक सरणी स्वीकार करता है, फाइलों की कॉमा से अलग सूची नहीं ... –

+0

हाँ, मैंने भी कोशिश की है। अजीब बात यह है कि मैं सरणी में एक इंडेक्स में पास कर सकता हूं, जैसे pkg.lint [0] और यह उस विशिष्ट फ़ाइल को लिंट करेगा। –

+0

एक त्वरित डीबग विधि के रूप में, अंतिम पंक्ति को 'grunt.registerTask (' डिफ़ॉल्ट ',' lint ', function() {console.log (grunt.config (' lint '))} में बदलने की कोशिश करें;' और देखें कंसोल में आउटपुट क्या होता है ... –

उत्तर

24

के बाद से gruntjs नोड में समय में आप की तरह package.json पहुँच सकते हैं:

var package = require('./package.json'), 
    property = package.property[0]; 
2

मुझे लगता है कि <%= … %> वाक्यविन्यास (Underscore's template system में परिवर्तनीय इंटरपोलेशन) केवल तारों को आउटपुट कर सकता है, सरणी/ऑब्जेक्ट्स नहीं।

ऐसा करें:

lint: { 
    files: '<config:pkg.lint>' 
} 

मैं ग्रंट के jQuery init task में इस वाक्य पाया।

+0

धन्यवाद दिमित्री, मैंने कोशिश की, लेकिन मुझे "" फ़ाइल पढ़ने में असमर्थ (त्रुटि कोड: ENOENT)। जारी रखने के लिए - बल का उपयोग करें। इसका प्रयास करते समय। –

+0

यह वास्तव में अजीब है, और यदि आप '' के साथ लाइन को हटाते हैं तो आपको यह त्रुटि नहीं मिलती है? त्रुटि तब होती है जब फ़ाइल नहीं मिलती है ... –

1
grunt.initConfig({ 
    lint: grunt.file.readJSON('package.json').lint, 
}); 
संबंधित मुद्दे