2015-11-10 8 views
10

非ローカルNodeJSモジュールを「必要」としているが、モジュール名のスラッシュの意味は何か?npmパッケージにrequireが必要な場合、パッケージ名にスラッシュの意味はありますか?

例:
ShellJSからNPMモジュールのgithubのページ(リンク:https://github.com/shelljs/shelljs#javascript

require('shelljs/global');
require('shelljs/make');

ShellJSのgithubのプロジェクトのディレクトリ構造を見たとき、私は気づく両方global.jsことmake.jsは、両方ともpe30としてモジュールのメインエントリポイントであるshell.jsと同じレベルですrそのパッケージ.json。パッケージ名にスラッシュが何を意味するのか、そして上の例では "global"と "make"へのパスはどう決まるのでしょうか?

答えて

12

スラッシュ(主に使用される)は、単にファイルパスに使用されます。

require('shelljs/global')は、global.jsというファイルを読み込みます。

require('shelljs/make')は、make.jsというファイルを読み込みます。

ただし、require('shelljs')shell.jsのスクリプトを読み込みます。 なぜですか? package.jsonの内容を見てみましょう:それは魔法を作る"main": "./shell.js"です。

+0

かなり面白い!!それは 'require( 'shelljs/scripts/run-tests.js')'のようなこともできるということですか?そして、このようなスクリプトにあなたの個人リポジトリのためにアクセスできますか? – codneto

+0

'run-tests.js'は' CommonJs'モジュールではないので( 'module.exports = ...'は必要ありません)、これはできません。しかし、 'require( 'shelljs/src/chmod')'のように他のファイルにアクセスすることはできます。パッケージ外からのアクセスを制限する方法があるかどうかはわかりません。 – haotang

関連する問題