CoffeeScript中でCoffeeScriptをコンパイルする(shebangも良い感じに)
4414 ワード
CoffeeScriptで色々やる
まあ、なんつーか、色々なことをやりたくなるものです。で、今回は、CoffeeScriptでCoffeeScriptをコンパイルする仕組み。goldblendの最新版は、自分自身をコンパイルする機能を付けたので、そこからの抜粋です。その際、ちょっと工夫したい点は、shebang行の変換。そのへんは最初に正規表現で切り取って、書き出しの際にcoffee -> nodeに置換して付け加えています。
また、shebang行があると言うことは、実行権限が欲しいわけで、実行権限も付与しておきたいところですね。ただしここで、ついでにTIPS。なんか、fs.writeFileで、{mode: 0o0755}とか指定しても、実行可能ファイルは作れません。サンプルのように、fs.chmodで実行権限を別に付与して下さい。
では。
compile.coffee
fs = require('fs')
coffee = require('coffee-script').compile
compile = (coffeefile) ->
read = fs.readFileSync coffeefile,'utf8'
shebang = read.match(/^#!.*\r?\n/)
if shebang?
shebang = shebang[0]
read = read.replace(shebang,'')
shebang = shebang.replace('coffee','node')
jssrc = coffee read,{bare:true}
if shebang?
jssrc = shebang+"\n"+jssrc
jsfile = coffeefile.replace(/\.coffee$/,'')
else
jsfile = coffeefile.replace(/coffee$/,'js')
fs.writeFileSync jsfile,jssrc,'utf8'
if shebang?
oldmask = process.umask 0
fs.chmodSync jsfile,0o0755
process.umask oldmask
Author And Source
この問題について(CoffeeScript中でCoffeeScriptをコンパイルする(shebangも良い感じに)), 我々は、より多くの情報をここで見つけました https://qiita.com/mrpepper/items/b00ebf66c5537c07c1e9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .