tutorial objects node.js coffeescript npm

node.js - objects - coffeescript vs typescript



¿Puedo escribir el paquete npm en coffeescript? (5)

Aunque no estoy seguro de si es el mejor enfoque, técnicamente es posible escribir su paquete principalmente en CoffeeScript.

Básicamente, puede escribir un archivo JS que simplemente envuelve el comando de coffee , de esta manera:

bin / howl.coffee

console.log ''Awwwooooo!''

bin / howl.js

#!/usr/bin/env node var path = require(''path''); var exec = require(''child_process'').exec; var coffee = path.resolve(__dirname, ''../node_modules/coffee-script/bin/coffee''); var howl = path.resolve(__dirname, ''./howl.coffee''); var command = coffee + '' '' + howl; exec(command, function(error, stdout) { if (error) { throw error }; console.log(stdout); });

Ejecutar el node howl.js (o simplemente howl cuando está instalado globalmente) ahora saldrá Awwooooo! . Puede hacer cosas como require otros archivos de CoffeeScript y acceder a los argumentos pasándolos desde el "envoltorio" de JavaScript al CoffeeScript.

De todos modos, puede haber razones para no hacer esto, pero me ha funcionado hasta ahora, así que pensé que lo enviaría para una perspectiva adicional.

Para un proyecto de ejemplo simple que utiliza esta técnica, consulte https://www.github.com/joshuabc/packdown .

He usado coffeescript por un tiempo. Ahora necesito escribir un paquete npm, ¿puedo escribirlo en coffeescript, o debo compilar coffeescript en javascript?


He escrito paquetes npm en CoffeeScript desde cero. Lo invito a utilizar CoffeScript para nodo y para el navegador. Sin embargo, antes de poder usar o publicar su módulo, debe compilar la fuente CoffeeScript a JavaScript. Sin embargo, eso no debería detenerte el uso de CoffeeScript.

Consejo: Mientras desarrolla, use coffee -cw yourfile.coffee (línea de comando) para ver el archivo en busca de cambios y compilar al guardar.


Le sugiero que escriba su paquete en coffeescript, pero solo publíquelo en javascript. Lo hago así:

  • el código de coffeescript va en src
  • el código está compilado en lib
  • src está comprometido con mi git repo, lib está en mi .gitignore
  • lib se publica en npm, src está en mi .npmignore
  • el paquete coffee-script está en mis devDependencies

Puedes echar un vistazo a un paquete simple mío, refix , para inspirarte:

  • refix
  • npm install refix

Puede escribir módulos de NPM en coffeescript, pero para que los usuarios de JS puedan utilizarlos, deben compilarse en JS antes de publicar en NPM.

package.json hace fácil con su gancho de script prepublish que ejecuta el script especificado antes de publicarlo. Aquí hay un ejemplo de un gancho NPM prepublish en zombie.js

https://github.com/assaf/zombie/blob/master/package.json#L16


Si muchos de sus módulos tienen coffee-script en sus devDependencies , es útil simplemente instalar coffee-script lugar de instalarlo para cada módulo (lo que lleva mucho más tiempo).

coffee-build es un administrador de versión global para coffee-script .

Simplemente agregue estos 2 scripts a su package.json . package.json :

{ "name": "my-coffee-module", "scripts": { "build": "coffee-build -v 1.11.x -b -o js src", "postinstall": "npm run build" } }

Observe cómo -v 1.11.x no es una versión exacta, lo que permite actualizaciones implícitas.

La única npm install -g coffee-build es que los usuarios deben npm install -g coffee-build antes de que puedan instalar su módulo.