2012-01-18 9 views

Respuesta

8

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.

+0

En cierto modo se siente raro cometer código compilado, pero supongo que voy a intentar eso. –

+1

¿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. –

+1

@MarcelM. No es. Por cierto, puede usar .gitignore para ignorar la carpeta 'lib' en lugar de eliminarla. – qiao

8

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.

+2

Puedes ver esto trabajando en https://github.com/reaktivo/zootool –

+0

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

1

me acaba de empezar con CoffeeScript, pero me gustaría sugerir lo siguiente:

  1. tienda su código CoffeeScript en src/*.coffee,
  2. Escribe un main.js en la raíz del proyecto que la NGP se pondrá al día, y simplemente haga algo como require('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');

+2

Parece que hacer 'coffee-script' como requisito para un módulo que no está desarrollando no es la mejor idea. –

+0

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

+0

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

Cuestiones relacionadas