2016-08-17 11 views
2

グローバルにインストールできるパッケージを作成しようとしています。私のpackage.jsonは次のものを持っています:npmグローバルインストールでノードを使用しない

{ 
    "name": "my-new-package", 
    "version": "1.0.0", 
    "main": "index.js", 
    "preferGlobal": true, 
    "bin": { 
    "my-new-package": "index.js" 
    } 
} 

"node index.js"で実行でき、npmに公開することができます。

問題は、私は、グローバルnpm i -g my-new-packageそれをインストールするとき、Windows上のファイルmy-new-package.cmdがあるということである。

@"%~dp0\node_modules\my-new-package\index.js" %*

私はmy-new-packageを実行するときに、デフォルトのエディタでのJavaScriptファイルを開きます。

これとは対照的に、他のグローバルパッケージはnode.exeを使用します。ここでcute-files.cmd例だ:

@IF EXIST "%~dp0\node.exe" (
    "%~dp0\node.exe" "%~dp0\node_modules\cute-files\cute-files.js" %* 
) ELSE (
    @SETLOCAL 
    @SET PATHEXT=%PATHEXT:;.JS;=;% 
    node "%~dp0\node_modules\cute-files\cute-files.js" %* 

ところで、私はLinux上でそれをインストールし、同じ動作を取得します。

グローバルにインストールされているノードを使用するようにパッケージを設定するにはどうすればよいですか?ここで

答えて

2

mkdir my-new-package 
cd my-new-package 

グローバル実行可能nodejsパッケージを作成する方法である第一、今ここでDIRの子供my-new-package

mkdir bin 
mkdir lib 

ように、これらの2つのDIRSを作るcat package.json

{ 
    "name": "my-new-package", 
    "version": "1.0.0", 
    "description": "global module my-new-package", 
    "main": "./lib/index.js", 
    "bin": { 
    "my-executable-name": "./bin/test-module.js" 
    }, 
    "author": "", 
    "license": "ISC", 
    "preferGlobal": "true" 
} 

をされ作成必要な別のファイル今

var sayHello = function(name) { 
return 'Hello, ' + name; 
}; 

// Allows us to call this function from outside of the library file 
// Without this, the function would be private to this file 

exports.sayHello = sayHello; 

今ディレクトリにmy-new-packageどこファイルpackage.json命を取得し、グローバルコマンドをインストール

cd my-new-package 

npm install -g . 

予告上記のコマンド

をインストールするにピリオドを発行 cat bin/test-module.js

#!/usr/bin/env node 

var lib= require('../lib/index.js'); 
var greeting = lib.sayHello('hello everyone'); 

console.log(greeting); 

をファイルを作成します

その出力は現在、グローバルにインストールされていることをあなたは、任意のディレクトリ

my-executable-name 

で、この中を発行することができ、それが

Hello, hello everyone 

興味深いことに新で応答します。この

/home/stens/node-v6.5.0/bin/my-new-package -> /home/stens/node-v6.5.0/lib/node_modules/my-new-package/bin/test-module.js 
/home/stens/node-v6.5.0/lib 
└── [email protected] 

のようなものになりますnode30のグローバルbinディレクトリ内の実行可能な生存期間は、

which my-executable-name 

/home/stens/node-v6.5.0/bin/my-executable-name 
関連する問題