我有app.coffee文件
angular
.module('app', [
'ngAnimate',
'angular-loading-bar',
'ui.router',
'oc.lazyLoad',
'ui.bootstrap',
'ngResource'
])
当我将其编译为javascript时,它看起来像这样
// Generated by CoffeeScript 1.10.0
(function() {
angular.module('app', ['ngAnimate', 'angular-loading-bar', 'ui.router', 'oc.lazyLoad', 'ui.bootstrap', 'ngResource']);
}).call(this);
有什么方法可以保持缩进吗?
答案 0 :(得分:0)
除了一些简单的选项(例如--bare
)之外,无法修改CoffeeScript编译器的输出。
您是否关心C程序生成的汇编代码是什么样的?或者Python程序的字节码?通常你没有,你只是很少看它来调试特定的问题。 CofeeScript生成的JavaScript代码是相同的。接受编译的JS代码不是供人类使用的。当然,它的格式是你可以读取它来调试问题(这很好),但这不是主要关注点。
话虽这么说,你可以通过外部格式化工具运行它,但是它们如何区分这两个数组:
angular
.module('app', [
'ngAnimate',
'angular-loading-bar',
'ui.router',
'oc.lazyLoad',
'ui.bootstrap',
'ngResource'
])
one_line_array = ['ngAnimate', 'angular-loading-bar']
除了使用JS代码和 CoffeeScript代码之外别无他法。
如果你真的想要这个,你需要修改CoffeeScript源,或编写自己的工具来分析CofeeScript源并相应地修改JavaScript输出。如果您使用coffee --tokens
打印令牌,则会获得:
[IDENTIFIER angular] [= =] [{{] [IDENTIFIER模块] [::] [ - > - >] [INDENT 2] [OUTDENT 2] [}}] [TERMINATOR \ n] [IDENTIFIER angular] [。 。] [IDENTIFIER模块] [CALL_START(] [STRING'app'] [,,] [[[] [INDENT 4] [STRING'ngAnimate'] [,,] [TERMINATOR \ n] [STRING'angular angle loading- bar'] [,,] [TERMINATOR \ n] [STRING'ui.router'] [,,] [TERMINATOR \ n] [STRING'oc.lazyLoad'] [,,] [TERMINATOR \ n] [STRING'ui .bootstrap'] [,,] [TERMINATOR \ n] [STRING'ngResource'] [OUTDENT 4] []]] [CALL_END]] [TERMINATOR \ n]
将换行存储为[TERMINATOR \n]
。编写(和调试!)这样做的工具虽然不一定容易,但超出了Stack Overflow答案的范围; - )