2012-06-12 9 views
16

के लिए ऑटो संकलन सेट अप करना मैंने अपने मैक पर node.js/stylus/nib स्थापित किया है और मैं कमांड लाइन पर पर .styl फ़ाइल मैन्युअल रूप से संकलित कर सकता हूं। मुझे यह भी पता है कि stylus.middleware() चीजें हैं जो .styl परिवर्तनों के दौरान ऑटो-कंपाइलिंग को सेटअप करने के तरीके के बारे में जानने के लिए आती रहती हैं, हालांकि मुझे नहीं पता कि मुझे इसे कैसे कार्यान्वित किया जाना चाहिए (मैंने पहले कभी नोड.जेएस का उपयोग नहीं किया है)।स्टाइलस

मैं उस कोड को किस फ़ाइल में डालूं?

मैं इस कोड को कैसे शुरू करूं ताकि यह हमेशा चलता रहे?

मुझे लगता है कि मैं इसे स्थापित करने में सक्षम होने के लिए नोड पक्ष पर कुछ चीजें खो रहा हूं।

उत्तर

0

ठीक मैं अपने जवाब संपादित क्योंकि आप नहीं है एक होमपेज बनाने के लिए और चाहते हैं तो कनेक्ट-संपत्ति कोई मतलब नहीं है और आपकी मदद नहीं कर सकते हैं ... लेकिन शायद यह ...

http://thechangelog.com/post/3036532096/stylus-expressive-robust-feature-rich-css-language

उस साइट आप नीचे एक वीडियो जो कैसे कमांड लाइन के माध्यम से लेखनी का उपयोग करने के अंत के करीब से पता चलता पर मिल ...

HTH और खेद गलतफहमी के लिए ... पर

+0

ठीक है, वह हिस्सा जहां कहते है, क्या एप्लिकेशन विन्यास "तो फिर इस लाइन को अपने ऐप्लिकेशन के विन्यास में जोड़ें"। मेरे स्टाइलस फ़ाइल को संकलित करने के लिए मुझे केवल एक चीज node.js की आवश्यकता है। मेरे वास्तव में वेब एप्लिकेशन को node.js की आवश्यकता नहीं है और मैं अपने वेब एप्लिकेशन के लिए node.js शामिल नहीं करना चाहता हूं। – ryanzec

+0

मेरे उत्तर को संपादित किया ... उम्मीद है कि यह और अधिक समझ में आता है ... – silverfighter

9

आप एक वैश्विक रूप में स्थापित किया है stylus पैकेज (npm install stylus -g) आपके सिस्टम पर स्टाइलस बाइनरी है।

$ stylus -h 
    Usage: stylus [options] [command] [< in [> out]] 
       [file|dir ...] 

    Commands: 

    help [<type>:]<prop> Opens help info at MDC for <prop> in 
         your default browser. Optionally 
         searches other resources of <type>: 
         safari opera w3c ms caniuse quirksmode 

    Options: 

    -i, --interactive  Start interactive REPL 
    -u, --use <path>  Utilize the stylus plugin at <path> 
    -U, --inline   Utilize image inlining via data uri support 
    -w, --watch    Watch file(s) for changes and re-compile 
    -o, --out <dir>   Output to <dir> when passing files 
    -C, --css <src> [dest] Convert css input to stylus 
    -I, --include <path> Add <path> to lookup paths 
    -c, --compress   Compress css output 
    -d, --compare   Display input along with output 
    -f, --firebug   Emits debug infos in the generated css that 
          can be used by the FireStylus Firebug plugin 
    -l, --line-numbers  Emits comments in the generated css 
          indicating the corresponding stylus line 
    --include-css   Include regular css on @import 
    -V, --version   Display the version of stylus 
    -h, --help    Display help information 
+3

दुर्भाग्य से जब से यह पुनरावर्ती देखने का समर्थन नहीं करता है, यह तब तक है जब तक (और यहां दी गई टिप्पणियों के आधार पर: https://github.com/LearnBoost/stylus/पुल/227: यह होने वाला नहीं है) – ryanzec

+0

यकीन है, ऐसा लगता है कि टिकट को हल किया गया था और 5 महीने पहले बंद कर दिया गया था। यदि नहीं, तो आप स्टाइलस के अपने संस्करण में पुल अनुरोध को मर्ज करना चाहते हैं। – TheHippo

22

कमांड लाइन से आप उपयोग कर सकते हैं:

stylus -w folder/ 

या सिर्फ एक और उदाहरण के लिए:

stylus -w styl/*.styl -o css/ 

यह परिवर्तन के लिए देखेंगे और सभी * .styl फ़ाइलों को नीचे रहना संकलन वह फ़ोल्डर

+0

आप एक से अधिक फ़ोल्डर भी सूचीबद्ध कर सकते हैं जो मैं इसे परीक्षण कर सकता हूं। – Costa

1

** मैं कल यहां समाप्त हुआ और सही जवाब नहीं मिला। तो यह अनुवर्ती किसी और के लिए है जो मेरे जैसा ही मार्ग है ... **

मुझे स्टाइलस कमांड लाइन को भी सेट करने में समस्या थी। मैं stylus वैश्विक स्तर पर
$ npm install -g stylus
स्थापित करने और त्रुटियों को प्राप्त करने का प्रयास करता रहा। मैंने इसे grunt-contrib-stylus के साथ एक प्रोजेक्ट में काम किया था लेकिन कमांड लाइन के माध्यम से मुझे कुछ भी काम नहीं मिल रहा था।
यहां तक ​​कि $stylus --version कुछ भी वापस नहीं किया। मैंने npm को अपडेट करने का प्रयास किया और यह npm तोड़ दिया, इसलिए मैंने npm को पुनर्स्थापित करने के लिए node को पुनर्स्थापित कर दिया। तब मैं $ sudo npm install -g stylus का एक नया इंस्टॉल करने में सक्षम था और --version प्राप्त कर सकता था।
मैं भी grunt को पुनर्स्थापित करने के लिए किया था और बाकी सब कुछ मैं npm के माध्यम से विश्व स्तर पर स्थापित किया था ...

4

इस संक्षिप्त कुछ नोड मूल बातें शामिल हैं।

0. कोड व्यवस्थित करना। यह प्रोजेक्ट रूट में app.js नामक फ़ाइल में अपना मुख्य नोड एप्लिकेशन कोड डालने का एक सम्मेलन है।

अंदर app.js बातें दो सामान्य भागों में बांटा जाता है:

  1. तुल्यकालिक initializations: मॉड्यूल की आवश्यकता होती है, निर्देशिका का निर्माण, कॉन्फ़िगरेशन, डाटाबेस कनेक्शन, आदि चीज़ें है कि ब्लॉक पढ़ा, तो वे मौजूद हैं या करना चाहिए जल्दी मर जाओ।
  2. असीमित ऐप कार्य: सर्वर, पृष्ठभूमि प्रक्रियाएं, स्वत: संकलन सीएसएस & जेएस, रूटिंग, आई/ओ इत्यादि शुरू करें। घटना लूप में मौजूद चीजें।

1. जब आप ऐप बनाते हैं तो सीएसएस को स्टाइलस संकलित करें। हमें stylus मॉड्यूल की आवश्यकता है। आम तौर पर यह निर्भरताओं को एक साथ रखने के लिए app.js के शीर्ष पर किया जाता है।

var stylus = require('stylus'); 

पहली बार है कि नोड चलाता app.js, तो आप इस अपने सीएसएस निर्माण करने के लिए मॉड्यूल जे एस की जरूरत है। यह मूल विचार है:

stylus.render(stylus-code-string, function(err, css) { 
    if (err) throw err; 
    console.log(css); 
}); 

यहां आधिकारिक Stylus Javascript API है।

नोड की शक्ति का उपयोग करने के लिए, आपको एक बफर में fs module का उपयोग करके एक स्टाइलस फ़ाइल पढ़नी चाहिए, फिर इसे एक स्ट्रिंग में परिवर्तित करें, और अंत में इसे stylus.render() में पास कर दें। फिर, परिणाम को एक गंतव्य फ़ाइल में भेजें। चूंकि यह निर्माण प्रक्रिया का हिस्सा है, यह सिंक्रोनस हो सकता है। लेकिन यह वास्तव में आपका प्रश्न नहीं है ...

2. स्टाइलस के साथ पृष्ठभूमि प्रक्रिया के रूप में ऑटो-संकलन सीएसएस।

यह फ़ंक्शन child_process है कि एक ही .styl फ़ाइल देखता है और एक .css फ़ाइल में शामिल .styl फ़ाइलों को संकलित करता spawns। इसके लिए आपको मॉड्यूल की आवश्यकता नहीं है, केवल स्टाइलस निष्पादन योग्य स्थापित करें ताकि यह कमांड लाइन पर चल सके। (आप पहले से ही यह कर चुके हैं)। यह उदाहरण स्टाइलस संस्करण 0.5.0 के साथ बनाया गया था। साथ ही, आपके द्वारा उपयोग किए जाने वाले फ़ोल्डर पथ (उदा। build/styles और styles) मौजूद होने की आवश्यकता है।

function watchStyles(sourcefile, destinationfolder) { 
    var Stylus = child_process.spawn('stylus', ['--sourcemap', '-w', sourcefile, '--out', destinationfolder]); 

    Stylus.stdout.pipe(process.stdout); // notifications: watching, compiled, generated. 
    Stylus.stderr.pipe(process.stdout); // warnings: ParseError. 

    Stylus.on('error', function(err) { 
    console.log("Stylus process("+Stylus.pid+") error: "+err); 
    console.log(err); 
    }); 

    // Report unclean exit. 
    Stylus.on('close', function (code) { 
    if (code !== 0) { 
     console.log("Stylus process("+Stylus.pid+") exited with code " + code); 
    } 
    }); 
} 

अगला, आपको अपना ऐप शुरू करने के कुछ समय बाद इस फ़ंक्शन को कॉल करने की आवश्यकता है। स्रोत के रूप में अपने मास्टर .styl फ़ाइल में पास करें। फिर गंतव्य निर्देशिका जहां आप अपने सीएसएस को जाना चाहते हैं।

// check that you passed '-w' parameter 
if (process.argv[2] && (process.argv[2] == "-w")) { 
    watchStyles('styles/app.styl', 'build/styles'); 
} 

चलाकर एप्लिकेशन शुरू:

@import 'layout' 
@import 'header' 
@import 'main' 
@import 'footer' 
@import 'modal' 
@import 'overrides' 
0

पहले, स्थापित: $ node app.js -w

यह इतना है कि अपने app.styl की सामग्री को इस तरह दिखता है एक app.styl के तहत अपने .styl फ़ाइलों को व्यवस्थित करने में मदद करता है स्टाइलस स्थानीय रूप से npm install stylus --save-dev यदि आपने नहीं किया है।

startup.js

var fs = require('fs') 
var stylus = require('stylus') 

// Define input filename and output filename 
var styleInput = __dirname + '/dev/stylus/main.styl' 
var styleOutputFilename = 'main.css' 
var styleOutput = __dirname + '/static/' + styleOutputFilename 
var stylusPaths = [__dirname + '/dev/stylus', __dirname + '/dev/stylus/libs'] 

// Build stylesheet on first execute 
buildStyles(styleInput, styleOutput, stylusPaths) 

// Watch stylus file for changes. 
fs.watch(styleInput, function(eventType, filename) { 
    if (filename) { 
    buildStyles(styleInput, styleOutput, stylusPaths) 
    } else { 
    console.log('no filename found. probably platform doesnt support it.'); 
    } 
}); 

function buildStyles(input, output, paths) { 
    stylus(fs.readFileSync(input, 'utf-8')) 
    .set('paths', paths) 
    .set('include css', true) 
    .set('watch', true) 
    .render(function(err, css) { 
     if (err) throw err; 

     fs.writeFile(output, css, (err) => { 
     if (err) throw err; 

     console.log(' Stylesheet built successfully.'); 
     }); 
    }); 
} 

टर्मिनल में टाइप node startup.js:

एक स्टार्टअप स्क्रिप्ट है जो आपके स्टाइलशीट बनाता है और पुनर्निर्माण के लिए जब भी परिवर्तन आपकी मुख्य लेखनी फ़ाइल में पाया बनाएँ। आपको एक संदेश "स्टाइलशीट सफलतापूर्वक बनाया गया" दिखाई देगा। जब भी आप अपनी मुख्य स्टाइलस फ़ाइल बदलते हैं।

There is good documentation about stylus javascript api in their website.