我刚进入咖啡因世界,我在使用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的函数并上升到一个目录,在编译咖啡脚本时将输出设置为该目录。
如果您可以引导我找到可以帮助我找到解决方案的解决方案或来源,我将不胜感激。但是请记住,我不理解文档中的高级咖啡脚本...结果示例对我的开发技能更有用。
答案 0 :(得分: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
轻松找到。< / p>
root
现在,当您运行coffee --compile --output ../ ./
时,从root/..
开始,然后将输出目录设置为root/.
,将输入目录设置为root
(或简单地root
。 )
这意味着,当您从coffee --compile --output ./ coffee/
运行此命令时,您只想:
cd coffee/
或者如果你cd coffee
coffee --compile --output ../ ./
,那么:
{{1}}
应该可以正常工作。