Node.js 如何将coffeescript编译到源代码的父目录?
我刚刚进入了咖啡因的世界,我对咖啡档案有点麻烦 据我所知,cakefile使用coffee脚本语法;如果我想在子目录中查找文件,我需要使用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
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/./
然后进行编译)。