我可以在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
才能安装你的模块。