我已经使用过coffeescript了一段时间。现在我需要编写一个npm包,我可以用coffeescript编写它,还是我应该将coffeescript编译成javascript?
答案 0 :(得分:100)
我建议您在coffeescript中编写包,但只能在javascript中发布。我是这样做的:
src
lib
src
致力于我的git仓库,lib
位于我的.gitignore
lib
已发布到npm,src
位于.npmignore
coffee-script
包在我的devDependencies
你可以看看我的一个简单的包,refix,寻找灵感:
npm install refix
答案 1 :(得分:10)
您可以在coffeescript中编写NPM模块,但为了让JS用户可以使用它们,必须在发布NPM之前将它们编译为JS。
package.json
使用prepublish
脚本钩子轻松实现,在您发布之前运行指定的脚本。下面是zombie.js中prepublish
NPM挂钩的示例
https://github.com/assaf/zombie/blob/master/package.json#L16
答案 2 :(得分:1)
我已经从头开始在CoffeeScript中编写了npm包。我鼓励您将CoffeScript用于节点以及浏览器。但是,在使用或发布模块之前,必须将源CoffeeScript编译为JavaScript。但是,这不应该阻止你使用CoffeeScript。
提示:在开发过程中,使用coffee -cw yourfile.coffee
(命令行)来查看文件以进行更改,并在保存时进行编译。
答案 3 :(得分:1)
如果你的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"
}
}
请注意-v 1.11.x
不是一个确切的版本,它允许隐式升级。
唯一的缺点是用户必须npm install -g coffee-build
才能安装模块。
答案 4 :(得分:0)
虽然我不确定它是否是最好的方法,但从技术上来说, 可以在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&#34;包装器&#34;传递它们来执行require
其他CoffeeScript文件和访问参数之类的操作。到CoffeeScript。
无论如何,可能有理由不这样做,但到目前为止它对我有用,所以我认为这是为了提供额外的视角。
对于使用此技术的简单示例项目,请查看https://www.github.com/joshuabc/packdown。