68

私はしばらくの間、CoffeeScript を使用しています。npm パッケージを作成する必要があります。CoffeeScript で作成できますか?それとも、CoffeeScript を JavaScript にコンパイルする必要がありますか?

4

5 に答える 5

100

パッケージをcoffeescriptで作成することをお勧めしますが、それはjavascriptでのみ公開してください。私はこのようにします:

  • Coffeescriptコードが入りますsrc
  • コードはにコンパイルされますlib
  • src私のgitリポジトリにコミットしています、lib私の中にあります.gitignore
  • libnpmに公開されsrc、私の中にあります.npmignore
  • coffee-scriptパッケージは私の中にありますdevDependencies

インスピレーションを得るために、私の簡単なパッケージを見て、修正することができます。

于 2012-11-30T13:35:59.570 に答える
10

NPM モジュールは coffeescript で作成できますが、JS ユーザーが使用できるようにするには、NPM で公開する前に JS にコンパイルする必要があります。

package.jsonprepublish公開する前に指定されたスクリプトを実行するスクリプトフックを使用すると、これが簡単になります。prepublish以下は、zombie.jsの NPM フックの例です。

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

于 2012-11-30T22:35:40.913 に答える
2

多くのモジュールがcoffee-scriptに含まれている場合は、モジュールごとにインストールするのではなく、devDependenciesグローバルにインストールする方が便利coffee-scriptです (時間がかかります)。

coffee-buildは のグローバル バージョン マネージャーです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、モジュールをインストールする前に、ユーザーがしなければならないことです。

于 2016-10-11T17:25:02.373 に答える
1

私は、npm パッケージを CoffeeScript でゼロから作成しました。ブラウザだけでなくノードにも 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!ました。requireJavaScript「ラッパー」からCoffeeScriptに引数を渡すことで、他のCoffeeScriptファイルとアクセス引数のようなことを行うことができます。

とにかく、これをしない理由があるかもしれませんが、これまでのところうまくいったので、追加の観点からこれを提出することにしました.

この手法を使用した簡単なサンプル プロジェクトについては、https://www.github.com/joshuabc/packdownを確認してください。

于 2015-01-07T06:39:21.537 に答える