Can I write npm package in CoffeeScript?
I have used CoffeeScript for a while. Now I need to write a npm package, can I write it in CoffeeScript, or I should compile CoffeeScript into JavaScript?
Solution 1:
I'm going to suggest that you write your package in coffeescript, but only publish it in javascript. I do it like this:
- coffeescript code goes in
src
- code is compiled to
lib
-
src
is committed to my git repo,lib
is in my.gitignore
-
lib
is published to npm,src
is in my.npmignore
- the
coffee-script
package is in mydevDependencies
You can take a look at a simple package of mine, refix, for inspiration:
- https://github.com/linus/refix
npm install refix
Solution 2:
You can write NPM modules in coffeescript, but in order for them to be usable by JS users they must be compiled to JS before you publish on NPM.
package.json
makes this easy with their prepublish
script hook which runs the specified script before you publish. Heres an example of a prepublish
NPM hook in zombie.js
https://github.com/assaf/zombie/blob/master/package.json#L16
Solution 3:
If a lot of your modules have coffee-script
in their devDependencies
, it's useful to just globally install coffee-script
instead of install it for each module (which takes much longer).
coffee-build is a global version manager for coffee-script
.
Just add these 2 scripts to your package.json
:
{
"name": "my-coffee-module",
"scripts": {
"build": "coffee-build -v 1.11.x -b -o js src",
"postinstall": "npm run build"
}
}
Notice how -v 1.11.x
is not an exact version, which allows implicit upgrades.
The only downfall is that users must npm install -g coffee-build
before they can install your module.