Can I use CoffeeScript instead of JS for node.js?

Javascriptnode.jsCoffeescript

Javascript Problem Overview


What are my restrictions if I want to code node.js and use CoffeeScript? Can I do anything I'd be able to do in JS?

Javascript Solutions


Solution 1 - Javascript

Yes, CoffeeScript simply compiles into pure JS, making it completely compatible with node.js.

To run CoffeeScripts on node, you can either:

  • Type coffee -c example.coffee to compile, followed by node example.js to run the compiled JS.
  • Simply type coffee example.coffee

Solution 2 - Javascript

Not only can you run CoffeeScript files directly in Node with

coffee source.coffee

you can also require them as if they were JavaScript files. For instance, if you have lib.coffee in a directory, you can write

require './lib'

from another CoffeeScript file in the same directory. (In order to do this from a JavaScript file, you'll have to add require 'coffee-script' at the top.) So, you never have to do compilation explicitly under Node, unless you're packaging your project for deployment with a tool like npm.

One caveat: In stack traces, the line numbers you'll see refer to the compiled JavaScript, even when you're running CoffeeScript directly (so you don't have access to the JavaScript). A lot of folks are trying to fix this, but it's a big challenge.

Solution 3 - Javascript

Yes, here's a different & simpler answer. You need to do 2 steps.

  1. npm install coffee-script --save # I assume you would have done this already.

  2. Have require('coffee-script') as the first line that would get executed in server.js of app.js. (UPDATE: since coffee script 1.7, you will have to do require('coffee-script/register'))

This registers coffeescript compiler to your app and you can start treating coffee files and js files equally now (meaning that you can require coffee files too !).

This method will require you to write just the one file (app.js) in vanilla javascript. But the advantage is that your deploy environment need not have coffeescript as an initial globally installed dependency to run your app. In this case, you would just have to copy over your code, and npm install would install all packages necessary. And npm start would have you up and running

Solution 4 - Javascript

Video Tutorials

I've seen a great tutorial series by Pedro Teixeira. He's been building an entire series on node tutorials. He includes reference to nodemon for auto detection and compilation and reloading of edited .coffee files.

  1. Coffeescript and Node.js
  2. Nodemon

Solution 5 - Javascript

You can use Jitter, a Simple continuous compilation for CoffeeScript.

npm install -g jitter

Let's say you have a bunch of *.coffee files in the coffee directory, and want to compile them to the js directory. Then run:

jitter coffee js

Jitter runs in the background until you terminate it (Ctrl+C), watching for new changes.

Solution 6 - Javascript

Coffeescript + ExpressJS + Couchdb + Redis + Auth:

https://gist.github.com/652819

Solution 7 - Javascript

Try this

#!/usr/bin/env coffee
v = 78
console.log "The value of v is '#{v}'"

Then do:

chmod +x demo.coffee
./demo.coffee

CoffeeScript has pretty solid integration with node. Once the 'coffee-script' module is loaded, either by require('coffee-script'), by the she-bang I demo'd above, or by running coffee demo.coffee ... once loaded, you can used require('./foo') to bring in foo.coffee

Solution 8 - Javascript

If you want to automatically compile all your coffeescript files (in one directory including subdir) every time they change into javascript, just use this command:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondonaldView Question on Stackoverflow
Solution 1 - JavascriptDavid TangView Answer on Stackoverflow
Solution 2 - JavascriptTrevor BurnhamView Answer on Stackoverflow
Solution 3 - JavascriptgprasantView Answer on Stackoverflow
Solution 4 - JavascriptMark EsselView Answer on Stackoverflow
Solution 5 - JavascriptRoger Garzon NietoView Answer on Stackoverflow
Solution 6 - JavascriptShripad KrishnaView Answer on Stackoverflow
Solution 7 - JavascriptDave DopsonView Answer on Stackoverflow
Solution 8 - JavascriptTaner TopalView Answer on Stackoverflow