我可以在coffeescript中编写npm包吗?

时间:2012-11-30 13:02:00

标签: node.js coffeescript npm

我已经使用过coffeescript了一段时间。现在我需要编写一个npm包,我可以用coffeescript编写它,还是我应该将coffeescript编译成javascript?

5 个答案:

答案 0 :(得分:100)

我建议您在coffeescript中编写包,但只能在javascript中发布。我是这样做的:

  • coffeescript代码进入src
  • 代码编译为lib
  • src致力于我的git仓库,lib位于我的.gitignore
  • lib已发布到npm,src位于.npmignore
  • coffee-script包在我的devDependencies

你可以看看我的一个简单的包,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-buildcoffee-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