0

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

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

话虽如此,当我在这个美味的 cakefile 教程中查看一些示例时,我遇到了以下片段:

{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

我想将我的咖啡脚本放在/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 并进入一个目录,在编译咖啡脚本时将输出设置为该目录。

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

4

1 回答 1

3

我认为这里的主要区别是工作目录。

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

当您拥有该设置并从运行它时root,您可以运行coffee --compile --output lib/ src/它,因为root/lib并且root/src都可以从root.

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

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

这意味着,当您运行此命令时,root您只需:

coffee --compile --output ./ coffee/

或者如果你cd coffee/,那么这个:

cd coffee
coffee --compile --output ../ ./

应该可以正常工作。

于 2012-12-18T07:01:51.867 回答