Node.js 如何将coffeescript编译到源代码的父目录?

Node.js 如何将coffeescript编译到源代码的父目录?,node.js,compiler-construction,coffeescript,cakefile,Node.js,Compiler Construction,Coffeescript,Cakefile,我刚刚进入了咖啡因的世界,我对咖啡档案有点麻烦 据我所知,cakefile使用coffee脚本语法;如果我想在子目录中查找文件,我需要使用fs模块,并像在nodejs应用程序中一样执行所有需要执行的操作,对吗?整个项目我只需要一份档案,对吗?我是否需要对package.json或项目进行任何更改才能使用Cakefile 话虽如此,当我在查看一些示例时,我遇到了以下片段: {exec} = require 'child_process' task 'build', 'Build project f

我刚刚进入了咖啡因的世界,我对咖啡档案有点麻烦

据我所知,cakefile使用coffee脚本语法;如果我想在子目录中查找文件,我需要使用
fs
模块,并像在nodejs应用程序中一样执行所有需要执行的操作,对吗?整个项目我只需要一份档案,对吗?我是否需要对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
我想把我的coffescripts放在
/coffee
目录下,我想为找到的每个coffescripts编译成
/
。例如,如果找到
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并向上移动一个目录,在编译coffee脚本时将输出设置为该目录


如果你能给我一个解决方案或一个能帮助我找到解决方案的来源,我将不胜感激。但是请记住,我不理解文档中的高级咖啡脚本内容。。。有结果的例子对我的发展技能更有用。

我认为这里的关键区别在于工作目录

- root
-- lib
--- foo.js <- target
-- src
--- foo.coffee
现在,从
root
运行
coffee--compile--output../
时,将输出目录设置为
root/。
,将输入目录设置为
root/
(或者干脆设置为
root

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

coffee --compile --output ./ coffee/
或者如果您
cd coffee/
,则:

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

应该可以。我认为这里的关键区别在于工作目录

- root
-- lib
--- foo.js <- target
-- src
--- foo.coffee
现在,从
root
运行
coffee--compile--output../
时,将输出目录设置为
root/。
,将输入目录设置为
root/
(或者干脆设置为
root

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

coffee --compile --output ./ coffee/
或者如果您
cd coffee/
,则:

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

应该可以正常工作。

$coffee--output../
但是因为它不起作用”发生了什么而不是你所期望的?哦,我现在找到了输出,它将
/coffee/script.coffee
放入
。/coffee/script.js
中,所以它现在不在项目目录中了。“
$coffee--output../
但是因为它不起作用”发生了什么事而不是你所期望的?哦,我现在找到了输出,它将
/coffee/script.coffee
放入
./coffee/script.js
中,所以它现在不在项目目录中了。啊,太棒了!非常感谢。因此,不需要使用文件系统模块或任何东西!如果您只是想运行coffee命令,则不需要<代码>Cakefiles仍然很方便。你可以用takes把这个行包装起来,然后用
cake compile
调用它,这样你就不必记住语法了。我明白了。要使
--output
文件夹相对于正在编译的
source.coffee
,我需要编写一个函数(可能是一个函数,它将所有
.coffee
文件放入一个数组并获取它们的路径,并将
--output
设置为
pwd/./
然后进行编译)。啊,太棒了!非常感谢。因此,不需要使用文件系统模块或任何东西!如果您只是想运行coffee命令,则不需要<代码>Cakefiles仍然很方便。你可以用takes把这个行包装起来,然后用
cake compile
调用它,这样你就不必记住语法了。我明白了。要使
--output
文件夹相对于正在编译的
source.coffee
,我需要编写一个函数(可能是一个函数,它将所有
.coffee
文件放入一个数组并获取它们的路径,并将
--output
设置为
pwd/./
然后进行编译)。