我使用 CoffeeScript 已经有一段时间了。现在我需要写一个npm包,我可以用CoffeeScript写,还是应该把CoffeeScript编译成JavaScript?
5 回答
我将建议你用 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 用户可以使用它们,必须在发布到 NPM 之前将它们编译为 JS。
package.json
prepublish
他们的脚本挂钩使这很容易,该挂钩在您发布之前运行指定的脚本。下面是prepublish
zombie.js 中 NPM 钩子的示例
https://github.com/assaf/zombie/blob/master/package.json#L16
如果您的很多模块都coffee-script
在它们devDependencies
的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"
}
}
注意 how-v 1.11.x
不是一个精确的版本,它允许隐式升级。
唯一的缺点是用户必须npm install -g coffee-build
在安装您的模块之前。
我从头开始用 CoffeeScript 编写 npm 包。我鼓励您将 CoffeScript 用于节点和浏览器。但是,在您可以使用或发布您的模块之前,您必须将源 CoffeeScript 编译为 JavaScript。不过,这不应该阻止您使用 CoffeeScript。
提示:在开发过程中,使用coffee -cw yourfile.coffee
(命令行)查看文件的更改并在保存时编译。
虽然我不确定这是否是最好的方法,但从技术上讲,您可以主要使用 CoffeeScript 编写您的包。
coffee
基本上,您可以编写一个简单地包装命令的 JS 文件,如下所示:
bin/howl.coffee
console.log 'Awwwooooo!'
bin/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。