我可以写NPM包的CoffeeScript?(Can I write npm package in

2019-07-04 07:44发布

我已经使用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 。



文章来源: Can I write npm package in coffeescript?