我已经使用CoffeeScript的一段时间。 现在我需要写一个NPM包,我可以写它的CoffeeScript,或者我应该CoffeeScript的编译成JavaScript?
Answer 1:
我会建议你写你的包在CoffeeScript中,但只有在JavaScript发布。 我不喜欢这样写道:
- CoffeeScript的代码放在
src
- 代码被编译成
lib
-
src
致力于我的git仓库,lib
是在我.gitignore
-
lib
发布到NPM,src
是我.npmignore
- 该
coffee-script
包在我devDependencies
你可以看看一个简单的包矿的refix ,寻找灵感:
- https://github.com/linus/refix
-
npm install refix
Answer 2:
你可以在CoffeeScript中编写NPM模块,但为了让他们能够通过你的NPM发布之前,它们必须被编译成JS JS用户使用。
package.json
使得这个容易与他们prepublish
您发布之前运行指定的脚本脚本挂机。 下面有一个的示例prepublish
在zombie.js NPM钩
https://github.com/assaf/zombie/blob/master/package.json#L16
Answer 3:
我白手起家写在CoffeeScript的NPM包。 我鼓励您使用CoffeScript节点以及为浏览器。 然而,才可以使用或发布你的模块,你必须编译源的CoffeeScript给JavaScript。 这不应该阻止你使用的CoffeeScript,虽然。
提示:在开发,利用coffee -cw yourfile.coffee
(命令行)要监视更改的文件和编译上保存。
Answer 4:
如果你的很多模块具有coffee-script
在他们devDependencies
,是非常有用的只是全球安装coffee-script
,而不是安装它为每个模块(这需要更长的时间)。
咖啡构建是一个全球性的版本管理coffee-script
。
只是这2个脚本添加到您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
他们可以安装模块之前。
Answer 5:
虽然我不知道这是否是最好的方法,在技术上也可以写你的包大多在CoffeeScript的。
基本上,你可以写一个简单的包装了一个JS文件coffee
命令,就像这样:
斌/ 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!
。 你可以做这样的事情require
其他的CoffeeScript文件和访问参数从JavaScript的“包装”到CoffeeScript的传递它们。
无论如何,有可能是理由不这样做,但它迄今已为我工作那么想我会提交此额外的观点。
对于使用这种技术的简单示例项目,请https://www.github.com/joshuabc/packdown 。