web-dev-qa-db-fra.com

require () 'ing un fichier CoffeeScript à partir d'un fichier JavaScript ou REPL

J'utilise Node.js et je souhaite incorporer CoffeeScript dans mon flux de travail. J'ai deux cas d'utilisation:

  1. Je veux pouvoir écrire des fichiers JavaScript qui require() modules CoffeeScript
  2. Je veux pouvoir charger des modules CoffeeScript depuis le nœud REPL

Pour le cas # 1: je peux simplement compiler de .coffee À .js Et require() le module .js, Comme solution de contournement .

Pour le cas n ° 2: En ce moment, je suis eval() la sortie de coffee-script.compile().

Existe-t-il un moyen meilleur et plus unifié de procéder?

53
nicolaskruchten

Le module coffee-script enregistre son extension une fois requis.

$ 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: Ce comportement a changé avec la relâche de CoffeeScript 1.7.0. Vous devez maintenant faire:

require('coffee-script/register');
94
matyr

Une solution plus polyvalente consisterait à utiliser mieux exigé .

npm install better-require

Il vous permet de require() fichiers CoffeeScript, aucune pré-compilation nécessaire. (Il vous permet également de require() un tas d'autres formats de fichiers: CoffeeScript, clojurescript, yaml, xml, etc.)

Dans le cas de CoffeeScript, il nécessite simplement le module coffee-script.

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

Divulgation: J'ai écrit better-require.

12
Olivier Lalonde