我可以在coffeescript中编写npm包吗?
我已经使用咖啡一段时间了。 现在我需要写一个npm包,我可以写在coffeescript,或者我应该编译成javascript的coffeescript?
我会build议你用coffeescript编写你的软件包,但只能用javascript发布。 我这样做:
- 咖啡代码进入src
-  代码被编译为lib
-   src是致力于我的git repo,lib是在我的.gitignore
-   lib发布到npm,src在我的.npmignore
-   coffee-script包在我的devDependencies
你可以看看我的一个简单的包, refix ,以获得灵感:
- https://github.com/linus/refix
-  npm install refix
您可以使用coffeescript编写NPM模块,但为了让JS用户可以使用它们,必须先将其编译为JS,然后才能在NPM上发布。
  package.json使用它的prepublish脚本钩子很容易,它在发布之前运行指定的脚本。 下面是一个在zombie.js中预先prepublish NPM钩子的例子 
https://github.com/assaf/zombie/blob/master/package.json#L16
我从零开始在CoffeeScript中编写了npm包。 我鼓励你使用CoffeScript作为节点以及浏览器。 但是,在使用或发布模块之前,必须将源代码CoffeeScript编译为JavaScript。 不过,这不应该阻止你使用CoffeeScript。
 提示:在开发过程中,使用coffee -cw yourfile.coffee (命令行)观察文件的变化并在保存时编译。 
虽然我不确定这是否是最好的方法,但从技术上讲,可以使用CoffeeScript编写您的程序包。
 基本上,你可以写一个简单的包装coffee命令的JS文件,就像这样: 
斌/ howl.coffee
 console.log 'Awwwooooo!' 
斌/ 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); }); 
 运行node howl.js (或者在全局安装时只是howl )现在将输出Awwooooo!  。 您可以通过将其从JavaScript“包装器”传递给CoffeeScript来执行其他CoffeeScript文件和访问参数。 
无论如何,可能有理由不这样做,但迄今为止我已经工作了,所以我想提出这个从另一个angular度来看。
对于使用这种技术的简单示例项目,请查看https://www.github.com/joshuabc/packdown 。
 如果您的许多模块在devDependencies都有coffee-script ,那么只需全局安装coffee-script而不是为每个模块安装coffee-script (这需要花费更长的时间)。 
  coffee-build是coffee-script的全球版本经理。 
 只需将这两个脚本添加到您的package.json : 
 { "name": "my-coffee-module", "scripts": { "build": "coffee-build -v 1.11.x -b -o js src", "postinstall": "npm run build" } } 
 注意-v 1.11.x是不是一个确切的版本,它允许隐式升级。 
 唯一的缺点是用户必须先npm install -g coffee-build才能安装你的模块。