2012-09-05 11 views
5

Chcę móc utworzyć katalog plików zdrapek stron internetowych, gdzie każdy plik jest samodzielną stroną.Czy można używać wtyczek Stylus z wbudowanym kodem Stylus osadzonym w pliku Jade?

Jest to dość łatwe regularne HTML/CSS/JS:

<head> 
    <style> 
     p { 
      color: red; 
     } 
    </style> 
</head> 
<body> 
    <p>lololol</p> 
</body> 

I to podobnie łatwe Jade/Stylus/coffeescript:

head 
    :stylus 
     p 
      color red 
body 
    p lololol 

Rzecz w tym, że nie ma jasny sposób użyj wtyczek Stylus w ten sposób. Konkretnie chciałbym używać colorspaces.js i stalówka eksperymentować z kolorami bardziej efektywnie:

head 
    :stylus 
     @import 'nib' 
     p 
      color CIELCH(20.470, 74.265, 314.113) 
      background-color linear-gradient(white, black) 
body 
    p lololol 

obejście obecnie używam


Można widelec Jade zmieniając these lines tak:

/** 
    * Transform stylus to css, wrapped in style tags. 
    */ 

    stylus: function(str, options){ 
+ colorspaces = require('colorspaces'); 
+ nib = require('nib'); 
    var ret; 
    str = str.replace(/\\n/g, '\n'); 
    var stylus = require('stylus'); 
- stylus(str, options).render(function(err, css){ 
+ stylus(str, options).use(colorspaces()).use(nib()).render(function(err, css){ 
     if (err) throw err; 
     ret = css.replace(/\n/g, '\\n'); 
    }); 
    return '<style type="text/css">' + ret + '</style>'; 
    }, 

A jeśli ty nstall Zależności Jade (musiałem npm install commander i npm install mkdirp), możesz przejść do /jade_fork/bin/ i zrobić ./jade name_of_file.jade.


Ale wolałbym pozostać na głównej gałęzi Jade ze względów konserwacyjnych.

Odpowiedz

1

Aktualizacja:

Oto najlepszy sposób znalazłem:

Zapisz jako przykład ~/bin/jade:

#!/usr/bin/env node 

var jade = require('jade'); 

jade.filters.stylus = // your code from above 

require('jade/bin/jade'); 

będzie działać dokładnie tak, jak /usr/local/bin/jade, z wyjątkiem będzie używać kodu do kompilacji rysika, z stalówka itp


Old odpowiedź:

Proponuję zrobić to tak:

var jade = require('jade'); 

jade.filters.stylus = // your code from above 

jade.compile(/* ... */); 

Gubisz się w skrypcie wiersza poleceń jade, ale powinieneś być w stanie skompilować swoje pliki w ten sposób, w zależności od jade master.

+0

Dziękuję, ta (nowa odpowiedź) działa świetnie! –