如何将coffeescript编译到源的父目录?

时间:2012-12-18 06:43:54

标签: node.js compiler-construction coffeescript cakefile

我刚进入咖啡因世界,我在使用CakeFiles时遇到了一些麻烦。

据我所知,Cakefiles使用咖啡脚本语法;如果我想在子目录中查找文件,我需要fs模块并执行我需要做的任何事情,就像我在nodejs应用程序中一样吗?我整个项目只需要一个Cakefile,对吗?我是否需要对package.json或项目的任何内容进行任何更改才能使用Cakefile?

话虽如此,当我在this delicious cakefile tutorial查看一些示例时,我遇到了以下片段:

{exec} = require 'child_process'
task 'build', 'Build project from src/*.coffee to lib/*.js', ->
  exec 'coffee --compile --output lib/ src/', (err, stdout, stderr) ->
    throw err if err
    console.log stdout + stderr

我想把我的coffescripts放在/coffee目录下,我希望它们为它找到的每个咖啡脚本编译成/。例如,如果它找到routes/coffee/index.coffee,则编译的js应该输出为routes/index.js。为了做到这一点,我尝试运行$ coffee --output ../ .,但由于它不起作用 - 尽管我认为值得尝试 - 我尝试用Cakefile做到这一点。

{exec} = require 'child_process'
task 'build', 'Build project from *.coffee to ../*.js', ->
  exec 'coffee --compile --output ../ .', (err, stdout, stderr) ->
    throw err if err
    console.log stdout + stderr

以上是上述代码段的修改版本。它没有用。我正在尝试更多地了解cakefiles,以便我可以编写一个记住pwd的函数并上升到一个目录,在编译咖啡脚本时将输出设置为该目录。

如果您可以引导我找到可以帮助我找到解决方案的解决方案或来源,我将不胜感激。但是请记住,我不理解文档中的高级咖啡脚本...结果示例对我的开发技能更有用。

1 个答案:

答案 0 :(得分:3)

我认为这里的关键区别是工作目录。

- root
-- lib
--- foo.js <- target
-- src
--- foo.coffee

如果您进行了此设置,并且root启用了coffee --compile --output lib/ src/,则可以运行root/lib,因为root/srcroot都可以从- root -- foo.js <- target -- coffee --- foo.coffee 轻松找到。< / p>

root

现在,当您运行coffee --compile --output ../ ./时,从root/..开始,然后将输出目录设置为root/.,将输入目录设置为root(或简单地root。 )

这意味着,当您从coffee --compile --output ./ coffee/ 运行此命令时,您只想:

cd coffee/

或者如果你cd coffee coffee --compile --output ../ ./ ,那么:

{{1}}

应该可以正常工作。