42

Cucumber.js は、シバン命令.jsを含む単純なファイルであるコマンドライン「バイナリ」を提供しています。

#!/usr/bin/env node
var Cucumber = require('../lib/cucumber');
// ...

バイナリは構成キーpackage.jsonで指定されます。"bin"

{ "name" : "cucumber"
, "description" : "The official JavaScript implementation of Cucumber."
// ...
, "bin": { "cucumber.js": "./bin/cucumber.js" }
// ...

これはすべて、POSIX システムでうまく機能します。Windows で Cucumber.js を実行すると問題が報告されました。

基本的に、.jsファイルは Windows の JScript インタープリター (Node.js ではない) を介して実行されるようで、shebang 命令のために構文エラーがスローされます。

私の質問は、UNIX と Windows の両方のシステムで動作する「バイナリ」スクリプトをセットアップするための推奨される方法は何ですか?

ありがとう。

4

3 に答える 3

67

Windows はシバン行を無視し、ファイルの関連付け#!/usr/bin/env nodeに従って実行します。.jsノードでスクリプトを呼び出すことについて明示してください

node hello.js

ps。Pedantry: シバンは POSIX 標準にはありませんが、ほとんどの *nix システムでサポートされています。


プロジェクトを Npm 用にパッケージ化する場合は、package.jsonの「bin」フィールドを使用します。Windows では、Npm が.cmdスクリプトと一緒にラッパーをインストールし、ユーザーがコマンドラインからスクリプトを実行できるようにします。

hello

npm がシムを正しく作成するには、スクリプトにシバン行が必要です #!/usr/bin/env node

于 2012-05-01T13:44:48.910 に答える
6

「bin」は「cucumber」である必要があります。npm は「node %SCRIPTNAME%」を指す「cucumber」または「cucumber.cmd」ファイルを作成します。前者は posix 環境用で、後者は Windows 用です...「js」を実行可能ファイル名の一部にしたい場合は...代わりにハイフォンを使用する必要があります...「cucumber-js」...あなたのケースでは、.js ファイルが .js.cmd の前に来るため、WScript インタープリターはそれをノード スクリプトではなく JScript ファイルとして実行します。

良い例として、coffee-script の package.jsonを見ることをお勧めします。

{
  "name":         "coffee-script",
  "description":  "Unfancy JavaScript",
  "keywords":     ["javascript", "language", "coffeescript", "compiler"],
  "author":       "Jeremy Ashkenas",
  "version":      "1.4.0",
  "licenses":     [{
    "type":       "MIT",
    "url":        "https://raw.github.com/jashkenas/coffee-script/master/LICENSE"
  }],
  "engines":      {
    "node":       ">=0.4.0"
  },
  "directories" : {
    "lib" : "./lib/coffee-script"
  },
  "main" : "./lib/coffee-script/coffee-script",
  "bin":          {
    "coffee":     "./bin/coffee",
    "cake":       "./bin/cake"
  },
  "scripts": {
    "test": "node ./bin/cake test"
  },
  "homepage":     "http://coffeescript.org",
  "bugs":         "https://github.com/jashkenas/coffee-script/issues",
  "repository":   {
    "type": "git",
    "url": "git://github.com/jashkenas/coffee-script.git"
  },
  "devDependencies": {
    "uglify-js":  ">=1.0.0",
    "jison":      ">=0.2.0"
  }
}
于 2012-10-26T17:09:46.507 に答える