compilers.coffee | |
---|---|
fs = require('fs')
{dirname} = require('path')
compilers = {} | |
jsとcssのコンパイラーは単に読み込むだけ | compilers.js = compilers.css = (path) ->
fs.readFileSync path, 'utf8' |
require.extensions? ここらへんを参考に | require.extensions['.css'] = (module, filename) ->
source = JSON.stringify(compilers.css(filename))
module._compile "module.exports = #{source}", filename |
coffee-scriptのコンパイラ | try
cs = require 'coffee-script'
compilers.coffee = (path) ->
cs.compile(fs.readFileSync(path, 'utf8'), filename: path)
catch err
eco = require 'eco' |
ここらへんがよくわからない。なんでmodule.exportsの含まれた文字列を返すの? | compilers.eco = (path) ->
content = eco.precompile fs.readFileSync path, 'utf8'
"module.exports = #{content}" |
これもなんでmodule.exportsの含まれた文字列を返すの? | compilers.jeco = (path) ->
content = eco.precompile fs.readFileSync path, 'utf8'
"""
module.exports = function(values){
var $ = jQuery, result = $();
values = $.makeArray(values);
for(var i=0; i < values.length; i++) {
var value = values[i];
var elem = $((#{content})(value));
elem.data('item', value);
$.merge(result, elem);
}
return result;
};
"""
require.extensions['.jeco'] = require.extensions['.eco'] |
jQuery.tmpl用の設定 | compilers.tmpl = (path) ->
content = fs.readFileSync(path, 'utf8')
"var template = jQuery.template(#{JSON.stringify(content)});\n" +
"module.exports = (function(data){ return jQuery.tmpl(template, data); });\n"
require.extensions['.tmpl'] = (module, filename) ->
module._compile(compilers.tmpl(filename)) |
Stylus用のコンパイラ | try
stylus = require('stylus')
compilers.styl = (path) ->
content = fs.readFileSync(path, 'utf8')
result = ''
stylus(content)
.include(dirname(path))
.render((err, css) ->
throw err if err
result = css
)
result
require.extensions['.styl'] = (module, filename) ->
source = JSON.stringify(compilers.styl(filename))
module._compile "module.exports = #{source}", filename
catch err
module.exports = compilers
|