2011-12-14 9 views
5

app.js नहीं मिल सकता है:express.js कम संकलक: काम

app.use(express.compiler({ src: __dirname + '/public', enable: ['less']})); 
app.use(express.static(__dirname + '/public')); 

मेरी जेड ध्यान में रखते हुए: सार्वजनिक/ऐप्स/स्टाइलशीट नहीं:

link(rel="stylesheet", type="text/css", href='/app/stylesheets/app.less) 

मैं भी कम समय में फ़ाइल मिल गया है /app.less

मैं पेज मैं एचटीएमएल सिर में मिल गया है का अनुरोध करते हैं:

<link href="/app/stylesheets/app.less" type="text/css" rel="stylesheet"> 

और सर्वर कंसोल में नोटिंग।

1) तो एक्सप्रेस भी ऐप को संकलित करने का प्रयास क्यों नहीं करता है? इसे होना चाहिए?

2) यदि सब कुछ सही: htm में लिंक करना चाहिए हो

<link href="/app/stylesheets/**app.less**" ... > 

या फ़ाइल का विस्तार बदलना चाहिए जबकि प्रस्तुत करना व्यक्त?

<link href="/app/stylesheets/**app.css**" ... > 

?

उत्तर

12

ऐसा नहीं है कि संकलक लगता है() कनेक्ट से हटा दिया गया था और यह अब समर्थित नहीं किया जाएगा, टीजे Holowaychuck (कनेक्ट & एक्सप्रेस के निर्माता) के अनुसार:

https://github.com/visionmedia/express/issues/877


अद्यतन 2013 -01-16

एक्सप्रेस 3.0.0 के रूप में ढांचे में अब compiler मिडलवेयर था के बजाय less-middleware शामिल है टी कनेक्ट में इस्तेमाल किया जाता था। यह पुराने मिडलवेयर के समान ही काम करता है।

एक मौजूदा परियोजना के लिए इसे जोड़ने के लिए, अपने package.json को less-middleware जोड़ सकते हैं और npm install चलाने फिर अपने config के लिए निम्नलिखित जोड़ें:

app.use(require('less-middleware')({ src: __dirname + '/public' })); 
app.use(express.static(path.join(__dirname, 'public'))); 

अपने जेड टेम्पलेट में आप एक सामान्य सीएसएस फ़ाइल के रूप में संदर्भ:

link(rel='stylesheet', type='text/css', href='css/styles.css') 

आपका निर्देशिका संरचना कुछ इस तरह दिखेगा:

myapp 
+-public 
    +-css 
    +-styles.less 

less-middleware उन फ़ाइलों के लिए देखेगा जिनके पास अनुरोध किया गया था .css फ़ाइल के समान नाम है। यदि यह एक पाता है तो यह इसे संकलित करेगा और परिणामी सीएसएस को सर्वर करेगा।

आप शायद अपने स्रोत नियंत्रण से संकलित सीएसएस फ़ाइलों को बाहर करना चाहते हैं। यदि आप गिट का उपयोग कर रहे हैं तो आप .css को अपने .gitignore फ़ाइल में जोड़ सकते हैं।

+0

हाँ, यह समझ में आता है मुझे स्रोत में कंपाइलर कॉल नहीं मिला .. इंगित करने के लिए धन्यवाद। – WHITECOLOR

5

आप मिडलवेयर के माध्यम से काम करने के लिए कम संकलन प्राप्त कर सकते हैं, वैसे ही Stylus वर्तमान में काम करता है।

संपादित करें: इसके बजाय [0] मुख्य कम भंडार यह सिर्फ एक अलग पैकेज के रूप में यह करने के लिए निर्णय लिया गया में [पुल अनुरोध] प्राप्त करने की कोशिश की। अपने जेड फ़ाइल में

var lessMiddleware = require('less-middleware'); 

var app = express.createServer(); 

app.configure(function() { 
    // Other configuration here... 

    app.use(lessMiddleware({ 
     src: __dirname + '/public', 
     compress: true 
    })); 

    app.use(express.static(__dirname + '/public')); 
}); 

आप तो सीएसएस फ़ाइल के संदर्भ में उपयोग करने के लिए सक्षम होना चाहिए::

का तरीका यहां बताया LESS.js middleware का उपयोग कर सकते है

link(rel="stylesheet", type='text/css', href='/app/stylesheets/app.css') 
+0

express.staticProvider अब एक्सप्रेस 3.x –

+0

में काम नहीं करता है, धन्यवाद, एक्सप्रेस 3.x स्थिर हैंडलर सिंटैक्स का उपयोग करने के लिए अपडेट किया गया। – Randy

संबंधित मुद्दे