私はしばらくの間、CoffeeScript を使用しています。npm パッケージを作成する必要があります。CoffeeScript で作成できますか?それとも、CoffeeScript を JavaScript にコンパイルする必要がありますか?
5 に答える
パッケージをcoffeescriptで作成することをお勧めしますが、それはjavascriptでのみ公開してください。私はこのようにします:
- Coffeescriptコードが入ります
src
- コードはにコンパイルされます
lib
src
私のgitリポジトリにコミットしています、lib
私の中にあります.gitignore
lib
npmに公開されsrc
、私の中にあります.npmignore
coffee-script
パッケージは私の中にありますdevDependencies
インスピレーションを得るために、私の簡単なパッケージを見て、修正することができます。
- https://github.com/linus/refix
npm install refix
NPM モジュールは coffeescript で作成できますが、JS ユーザーが使用できるようにするには、NPM で公開する前に JS にコンパイルする必要があります。
package.json
prepublish
公開する前に指定されたスクリプトを実行するスクリプトフックを使用すると、これが簡単になります。prepublish
以下は、zombie.jsの NPM フックの例です。
https://github.com/assaf/zombie/blob/master/package.json#L16
多くのモジュールが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
、モジュールをインストールする前に、ユーザーがしなければならないことです。
私は、npm パッケージを CoffeeScript でゼロから作成しました。ブラウザだけでなくノードにも CoffeScript を使用することをお勧めします。ただし、モジュールを使用または公開する前に、ソースの CoffeeScript を JavaScript にコンパイルする必要があります。ただし、CoffeeScript を使用することをためらう必要はありません。
ヒント: 開発中は、coffee -cw yourfile.coffee
(コマンド ライン) を使用してファイルの変更を監視し、保存時にコンパイルします。
それが最善のアプローチかどうかはわかりませんが、技術的には、ほとんどのパッケージを 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
JavaScript「ラッパー」からCoffeeScriptに引数を渡すことで、他のCoffeeScriptファイルとアクセス引数のようなことを行うことができます。
とにかく、これをしない理由があるかもしれませんが、これまでのところうまくいったので、追加の観点からこれを提出することにしました.
この手法を使用した簡単なサンプル プロジェクトについては、https://www.github.com/joshuabc/packdownを確認してください。