我刚刚进入咖啡因的世界,但在使用 Cakefiles 时遇到了一些麻烦。
据我了解,Cakefiles 使用咖啡脚本语法;如果我想在子目录中查找文件,我需要需要
fs
模块并做任何我需要做的事情,就好像我在 Nodejs 应用程序中一样,对吧?整个项目我只需要一个 Cakefile,对吗?我需要对 package.json 或项目进行任何更改才能使用 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 并进入一个目录,在编译咖啡脚本时将输出设置为该目录。
如果您能引导我找到解决方案或可以帮助我找到解决方案的来源,我将不胜感激。但是请记住,我不理解文档中的高级咖啡脚本内容...带有结果的示例对于我的开发技能会更有用。
我认为这里的关键区别是工作目录。
- 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 ../ ./
应该可以正常工作。