¿Existe una forma recomendada de desarrollar un módulo de nodo si quiero escribirlo en Coffeescript, pero no quiero obligar a los usuarios del módulo a requerir el módulo coffee-script
?¿Forma estándar de desarrollar un módulo de nodo usando Coffeescript?
Respuesta
Coloque sus códigos CoffeeScript en la carpeta src
y los códigos compilados de JavaScript en la carpeta lib
.
Luego en su archivo package.json
, declare main
como el archivo js en la carpeta lib
. Luego, los usuarios de su paquete necesitarán el archivo js en lugar del archivo de café.
Puede tomar @ TrevorBurnham's repository como ejemplo.
Terminé con solo una carpeta src
en mi repositorio de git; un archivo .gitignore
con una línea para lib
; y un archivo .npmignore
vacío. El archivo vacío .npmignore
es necesario porque si no está en su módulo, se usa su .gitignore
en su lugar.
acabo añadió un Cakefile
con una tarea de construir mi directorio src
usando coffee --compile --output lib/ src/
y una tarea pretest
y prepublish
a package.json
construir antes de la prueba y la publicación.
"scripts": { "pretest": "cake build", "prepublish": "cake build", }
Esta solución mantiene mi repositorio git limpia (sin código compilado), pero añade el código javascript para lib al publicar en la NGP.
Puedes ver esto trabajando en https://github.com/reaktivo/zootool –
Nota: esto no funciona (todavía) para "npm install reaktivo/zootool". Alguien podría querer hacer algo similar si bifurcaran su repositorio y estuvieran esperando que usted tome su parche. –
me acaba de empezar con CoffeeScript, pero me gustaría sugerir lo siguiente:
- tienda su código CoffeeScript en
src/*.coffee
, - Escribe un
main.js
en la raíz del proyecto que la NGP se pondrá al día, y simplemente haga algo comorequire('coffee-script'); require('./src/my_lib.coffee')
.
Allí. Usted nunca, nunca compila su código; todo se maneja de forma transparente. No comprueba código compilado en git, ni publica JavaScript compilado superfluo junto con CoffeeScript sin compilar para NPM.
Editar: En las versiones más recientes de café-scirpt, usted debe require('coffee-script/register');
Parece que hacer 'coffee-script' como requisito para un módulo que no está desarrollando no es la mejor idea. –
No estoy seguro de entender el comentario anterior: ¿cómo es que 'coffee-script' sea una dependencia diferente de tener' underscore' como una dependencia? – lambinator
Underscore es una biblioteca, mientras que CoffeeScript es un lenguaje compilado. Necesita la funcionalidad de una biblioteca en tiempo de ejecución. Con un lenguaje compilado no lo haces (necesariamente). Todo lo que necesitas es el código resultante. (Si fuera un lenguaje interpretado, * necesitaría * funcionalidad en tiempo de ejecución). – 1j01
- 1. Modo Coffeescript para la consola de nodo?
- 2. ¿Cómo usar coffeescript para desarrollar sitios web?
- 3. Forma de nodo personalizado de Drupal
- 4. Flotador de formato con módulo json estándar
- 5. archivos de clase CoffeeScript nodo y la herencia
- 6. ¿Cómo debo pasar opciones a un módulo de nodo?
- 7. ¿Cómo desarrollar software de forma remota?
- 8. ¿puedo desarrollar aplicaciones de Android usando gwt?
- 9. Patrón de módulo en Coffeescript con variables ocultas
- 10. Encontrar un rango de CoffeeScript
- 11. módulo de Drupal, comprobar si el tipo de nodo
- 12. Cómo usar el módulo node.js 'nodeunit' con archivos coffeescript
- 13. tamaño del nodo con forma de círculo =
- 14. Usando xmlDocument añadir nodo
- 15. forma correcta de mover un nodo arrastrando en javafx 2?
- 16. ¿Cuál es la forma más novedosa de desarrollar applets de gnome panel (usando python)
- 17. ¿Forma estándar de abrir una ventana de carpeta en Linux?
- 18. Importación de un módulo de forma dinámica utilizando imp
- 19. NodeJS + CoffeeScript Workflow
- 20. require() 'ing un archivo de CoffeeScript desde un archivo de JavaScript o REPL
- 21. ¿Hay alguna forma de no devolver algo con CoffeeScript?
- 22. acceso nodo ElementTree nodo primario
- 23. Buscar la posición de un nodo usando xpath
- 24. Cómo seleccionar el abuelo de un nodo usando xslt
- 25. Cambiar la posición de un nodo usando XSLT
- 26. ¿cómo hago una solicitud $ .get usando coffeescript?
- 27. ¿Realmente puedo desarrollar en ASP.NET MVC de forma gratuita?
- 28. ¿Cómo instalo un módulo globalmente usando npm?
- 29. ¿Cómo puedo obtener un Nodo adyacente a un Nodo único usando Scala?
- 30. cómo ejecutar el nodo js de forma remota
En cierto modo se siente raro cometer código compilado, pero supongo que voy a intentar eso. –
¿El repositorio de git está vinculado a npm? Porque si no es así, podría generar la carpeta lib justo antes de publicar y eliminar npm después. –
@MarcelM. No es. Por cierto, puede usar .gitignore para ignorar la carpeta 'lib' en lugar de eliminarla. – qiao