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 misdevDependencies
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.