C'è un modo consigliato di sviluppare un modulo nodo se voglio scriverlo in Coffeescript, ma non voglio forzare gli utenti del modulo a richiedere il modulo coffee-script
?Modo standard di sviluppo di un modulo nodo usando Coffeescript?
risposta
Inserire i codici CoffeeScript nella cartella src
e i codici JavaScript compilati nella cartella lib
.
Quindi nel file package.json
, dichiarare main
come il file js nella cartella lib
. Quindi gli utenti del pacchetto richiederanno il file js invece del file caffè.
Si può prendere @ TrevorBurnham repository come un esempio.
Ho terminato con solo una cartella src
nel mio repository git; un file .gitignore
con una riga per lib
; e un file vuoto .npmignore
. Il file vuoto .npmignore
è necessario perché se non si trova sul modulo, viene utilizzato il tuo .gitignore
.
Ho appena aggiunto un Cakefile
con un compito di costruire la mia directory src
utilizzando coffee --compile --output lib/ src/
e un compito pretest
e prepublish
a package.json
per costruire prima del test e la pubblicazione.
"scripts": { "pretest": "cake build", "prepublish": "cake build", }
Questa soluzione mantiene il mio repository git pulita (senza codice compilato), ma aggiunge il mio codice javascript per lib durante la pubblicazione di NPM.
Puoi vedere che funziona su https://github.com/reaktivo/zootool –
Nota: questo non funziona (ancora) per "npm install reaktivo/zootool". Qualcuno potrebbe voler fare qualcosa di simile se biforca il tuo repository e stavi aspettando che tu prendessi la loro patch. –
sto appena iniziato con CoffeeScript, ma io suggerirei le seguenti:
- Conservare il codice CoffeeScript in
src/*.coffee
, - Scrivi una
main.js
nella root del progetto che prenderà NPM, e fare semplicemente qualcosa comerequire('coffee-script'); require('./src/my_lib.coffee')
.
Lì. Non compili mai e poi mai il tuo codice; è tutto gestito in modo trasparente. Non si controlla il codice compilato in git, né si pubblica JavaScript compilato superfluo a fianco di CoffeeScript non compilato su NPM.
Edit: In più recenti versioni del caffè-scirpt, si dovrebbe require('coffee-script/register');
Si sente come rendere 'coffee-script' un requisito per un modulo che non si sta sviluppando non è l'idea migliore. –
Non sono sicuro di aver compreso il commento di cui sopra - come sta avendo 'coffee-script' una dipendenza diversa dalla presenza di 'underscore' come dipendenza? – lambinator
Underscore è una libreria, mentre CoffeeScript è un linguaggio compilato. È necessaria la funzionalità di una libreria in fase di esecuzione. Con un linguaggio compilato non (necessariamente). Tutto ciò di cui hai bisogno è il codice risultante. (Se fosse un linguaggio interpretato, * avresti * bisogno di funzionalità in fase di esecuzione.) – 1j01
- 1. file Nodo di classe CoffeeScript e l'eredità
- 2. Coffeescript e nodo-supervisore insieme?
- 3. Come utilizzare il nodo node.js "unità nodo" con file coffeescript
- 4. C'è un modo per non restituire qualcosa usando CoffeeScript?
- 5. Node.js: crea un progetto Express usando CoffeeScript
- 6. Esiste un modo per un modo conveniente di esprimere i grafici usando la strategia del nodo?
- 7. Come scegliere un modulo nodo?
- 8. Mappe sorgente CoffeeScript per lo sviluppo nodeJS
- 9. Test dei metodi di nodo non esportati di un modulo
- 10. Sviluppo di plugin per WordPress usando OOP
- 11. Come posso aggiungere un nodo sotto un nodo usando ObjectContentManager?
- 12. Webpack: come posso includere il css di un modulo nodo?
- 13. Flusso di lavoro NodeJS + CoffeeScript
- 14. Come utilizzare il modulo nodo modificato usando il ramo github?
- 15. Standard di codifica per lo sviluppo di app per iPhone
- 16. Autenticazione modulo standard Servlet Java
- 17. Tutorial di sviluppo del modulo in Drupal
- 18. CoffeeScript per selezionare i campi modulo in modo dinamico in caso di modifica e carico
- 19. C'è un modulo gui standlone per l'applicazione di nodo
- 20. come ricaricare un modulo Cython modo interattivo usando pyximport
- 21. Modo consigliato di applicare Bunyan a un'applicazione di nodo grande?
- 22. Indicare standard C++ in origine in un modo standard
- 23. Nodo non trovato Meno modulo
- 24. require() 'un file CoffeeScript da un file JavaScript o REPL
- 25. CoffeeScript stringa di confronto
- 26. Come cambiare l'icona di un nodo JStree usando solo css?
- 27. Come fare un file eseguibile nodo di shell, usando dattiloscritto
- 28. Libreria/modulo Nodejs per lo sviluppo di app CLI interattive?
- 29. Passaggio di un valore a un nodo Modulo js per route Express
- 30. Variabile di istanza CoffeeScript
E 'sorta di sente strano commettere codice compilato, ma credo che ho intenzione di provare che. –
Il repository git è collegato a npm? Perché se non lo è, potrei generare la cartella lib poco prima che npm lo pubblichi e lo cancelli dopo. –
@MarcelM. Non è. A proposito, puoi usare .gitignore per ignorare la cartella 'lib' invece di cancellarla. – qiao