require () ' ing файл CoffeeScript из файла JavaScript или REPL


Я использую узел.js и желание включить CoffeeScript в мой рабочий процесс. У меня есть два варианта использования:

  1. Я хочу иметь возможность писать файлы JavaScript, которые require() модули CoffeeScript
  2. Я хочу иметь возможность загружать модули CoffeeScript из узла REPL

для случая #1: я могу просто скомпилировать из .coffee to .js и require() the .js модуль, как временное решение.

по делу #2: прямо сейчас я eval()ing выход coffee-script.compile().

есть ли лучший, более унифицированный способ сделать это?

2 51

2 ответа:

The кофе-скрипт модуль регистрирует свое расширение, если требуется.

$ echo 'console.log "works"' > module.coffee

$ echo '
> require("coffee-script")
> require("./module")
> ' > test.js

$ node test.js
works

$ node
> require('coffee-script'); require('./module')
works
{}

Edit: это поведение изменилось с relase CoffeeScript 1.7.0. Теперь вам нужно сделать:

require('coffee-script/register');

более универсальным решением было бы использовать лучше-требовать.

npm install better-require

позволяет require() файлы CoffeeScript, предварительная компиляция не требуется. (Это также позволяет вам require() куча других форматов файлов: CoffeeScript, clojurescript, yaml, xml и др.)

в случае CoffeeScript, он просто требует coffee-script модуль.

require('better-require')();
var myModule = require('./mymodule.coffee');
var clojurescriptModule = require('./mymodule.cljs');
// etc.

раскрытие: я писал better-require.