如何编译coffeescript到源码的父目录?

问题描述 投票:0回答:1

我刚刚进入咖啡因的世界,但在使用 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 并进入一个目录,在编译咖啡脚本时将输出设置为该目录。

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

node.js coffeescript cakefile
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 ../ ./

应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.