web-dev-qa-db-fra.com

Puis-je écrire le paquet npm dans coffeescript?

J'ai utilisé coffeescript pendant un moment. Maintenant, je dois écrire un paquet npm, puis-je l'écrire dans coffeescript ou compiler coffeescript en javascript?

68
Zhe Chen

Je vais vous suggérer d'écrire votre paquet dans coffeescript, mais de le publier uniquement en javascript. Je le fais comme ça:

  • code coffeescript va dans src
  • le code est compilé en lib
  • src est engagé dans mon dépôt Git, lib est dans mon .gitignore
  • lib est publié dans npm, src est dans mon .npmignore
  • le package coffee-script est dans ma devDependencies

Vous pouvez jeter un oeil sur un de mes paquets, refix , pour vous inspirer:

Vous pouvez écrire des modules NPM dans coffeescript, mais pour qu'ils soient utilisables par les utilisateurs de JS, ils doivent être compilés pour JS avant toute publication sur NPM.

package.json simplifie cette tâche grâce à son hook prepublish qui exécute le script spécifié avant la publication. Voici un exemple de hook prepublish NPM dans zombie.js

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

10
Joseph Moniz

J'ai écrit des paquets npm dans CoffeeScript à partir de zéro. Je vous encourage à utiliser CoffeScript pour les nœuds ainsi que pour le navigateur. Cependant, avant de pouvoir utiliser ou publier votre module, vous devez compiler le code source CoffeeScript en JavaScript. Cela ne devrait toutefois pas vous empêcher d'utiliser CoffeeScript. 

Conseil: Pendant le développement, utilisez coffee -cw yourfile.coffee (ligne de commande) pour surveiller les modifications et compiler le fichier lors de la sauvegarde.

1
davidpfahler

Si beaucoup de vos modules ont coffee-script dans leur devDependencies, il est utile d'installer globalement coffee-script au lieu de l'installer pour chaque module (ce qui prend beaucoup plus de temps).

coffee-build est un gestionnaire de version global pour coffee-script.

Ajoutez simplement ces 2 scripts à votre package.json:

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

Notez que -v 1.11.x n'est pas une version exacte, ce qui permet les mises à niveau implicites.

Le seul inconvénient est que les utilisateurs doivent npm install -g coffee-build avant de pouvoir installer votre module.

0
aleclarson