68

我使用 CoffeeScript 已经有一段时间了。现在我需要写一个npm包,我可以用CoffeeScript写,还是应该把CoffeeScript编译成JavaScript?

4

5 回答 5

100

我将建议你用 coffeescript 编写你的包,但只用 javascript 发布它。我这样做:

  • 咖啡脚本代码进入src
  • 代码编译为lib
  • src致力于我的 git repo,lib在我的.gitignore
  • lib发布到 npm,src在我的.npmignore
  • coffee-script包裹在我的devDependencies

你可以看看我的一个简单的包refix,以获得灵感:

于 2012-11-30T13:35:59.570 回答
10

您可以在 coffeescript 中编写 NPM 模块,但为了让 JS 用户可以使用它们,必须在发布到 NPM 之前将它们编译为 JS。

package.jsonprepublish他们的脚本挂钩使这很容易,该挂钩在您发布之前运行指定的脚本。下面是prepublishzombie.js 中 NPM 钩子的示例

https://github.com/assaf/zombie/blob/master/package.json#L16

于 2012-11-30T22:35:40.913 回答
2

如果您的很多模块都coffee-script在它们devDependenciescoffee-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在安装您的模块之前。

于 2016-10-11T17:25:02.373 回答
1

我从头开始用 CoffeeScript 编写 npm 包。我鼓励您将 CoffeScript 用于节点和浏览器。但是,在您可以使用或发布您的模块之前,您必须将源 CoffeeScript 编译为 JavaScript。不过,这不应该阻止您使用 CoffeeScript。

提示:在开发过程中,使用coffee -cw yourfile.coffee(命令行)查看文件的更改并在保存时编译。

于 2012-11-30T13:07:03.043 回答
0

虽然我不确定这是否是最好的方法,但从技术上讲,可以主要使用 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

于 2015-01-07T06:39:21.537 回答