将 CoffeeScript 文件编译成一个 js 文件
Posted
技术标签:
【中文标题】将 CoffeeScript 文件编译成一个 js 文件【英文标题】:Compile CoffeeScript files into one js file 【发布时间】:2012-07-19 17:38:00 【问题描述】:我想知道是否可以使用 2.0.2(或中继)将我所有的 assets/*.coffee
文件编译成一个定义的(比如 app.js 和 app.min.js)文件,因此 没有使用本机编译器?
【问题讨论】:
原生编译器是什么意思,你想用什么代替? Play框架提供了一个集成的CoffeeScript编译器,我很想用这个,不知道用这个能不能把所有的*.coffee编译成一个。我找到的建议解决方案是使用本机编译器,我想避免使用。 我也不明白你所说的“本机编译器”是什么意思,但是咖啡有-c
编译参数和-j
将结果合并到一个文件中。我这样做的方式是:coffee -cj ./js/game.js ./coffee
playframework.org/documentation/2.0.2/AssetsCoffeeScript 在选项下。我不能更明确地了解本机编译器!
我不认为它是一个原生编译器(就像一个用 Scala 重写的 coffeescript 编译器),它只是调用了 coffeescript 编译器。
【参考方案1】:
由于 scala coffeescript 进程目前似乎支持的唯一选项是“bare”(http://www.playframework.com/documentation/2.0.2/AssetsCoffeeScript#options),因此您可能必须有一个进程来包装您的咖啡脚本,然后将它们放入适当的文件中。您可以将 grunt 用于该任务。以及处理文件的插件 grunt-contrib-coffee
coffee:
compile:
files:
'app/assets/app.js': [
'file1.coffee'
'file2.coffee'
]
将按顺序编译这些 src 文件并将编译后的文件放在 app/assets/app.js 中,该文件应该被 play 拾取。
grunt-contrib-coffee:https://github.com/gruntjs/grunt-contrib-coffee
【讨论】:
【参考方案2】:你不能只写一个构建脚本或使用cakefile吗?类似这样的东西:
fs = require 'fs'
exec require 'child_process'
fs.readdir 'path/to/coffee/', (err, files) ->
concat_result = ''
concat_file = 'path/to/concat_file.coffee'
for file in files
concat_result += fs.readFileSync file, 'utf8'
concat_file = fs.writeFile concat_file, concat_result
exec "whatever_compiler -c -o path/to/outfile #concat_file", (err, stdout, stderr) ->
#handle errs
【讨论】:
以上是关于将 CoffeeScript 文件编译成一个 js 文件的主要内容,如果未能解决你的问题,请参考以下文章
ruby on rails 中的 Coffeescript 编译错误
coffeescript、jade、stylus -> js、css 资产管理器?节点.js
NodeJS + CoffeeScript,根据要求渲染 CoffeeScript 编译的 js