Как скомпилировать coffeescript в родительский каталог исходного кода?
Я только что попал в мир кофеина, и у меня возникли небольшие проблемы с 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
Я хотел поставить мои 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
Который является измененной версией фрагмента выше. Это не сработало. Я пытаюсь узнать больше о файлах тортов, чтобы можно было написать функцию, которая запоминает pwd и переходит в один каталог, устанавливает вывод в качестве этого каталога во время компиляции сценариев кофе.
Если бы вы могли привести меня к решению или источнику, который мог бы помочь мне найти решение, я был бы признателен за это. Однако, пожалуйста, имейте в виду, что я не понимаю продвинутых сценариев кофе-скриптов из документации... Примеры с результатами были бы более полезными для моих навыков в разработке.
1 ответ
Я думаю, что ключевым отличием здесь является рабочий каталог.
- 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 ../ ./
Должно работать нормально.