15

Nodeは初めてですが、今のところ楽しんでいます。私は自分のnode_modules(ライブラリ)ディレクトリを公開されている「webroot」の外に移動しようとしていて、アドバイスとガイダンスが必要です。

単純なexpressJSベースのNodeプロジェクトを次のようにセットアップしました。

/my_project
  /config
  /public          
     /node_modules
     server.js

/node_modules私は自分のウェブルートの外にディレクトリを持ち、アプリケーションを壊さない方法があるのだろうかと思っていました。私は公開されているWebルートを最小限に抑えることに慣れており、そこにライブラリが存在することに不満を感じています。私を昔ながらと呼んでください、しかしそれは私がPHPとC#の世界で何かをすることに慣れている方法です。

プロジェクトを次のように設定した場合:

/my_project
  /config
  /node_modules
  /public          
     server.js

その後、すべてがぐらつき、ノードのrequire()魔法が壊れます。

私は次のことを試しました:

var express=require('../express');これも機能せず、「モジュールが見つかりません」タイプのエラーが発生します。

  1. 私が求めていることは可能でさえありますか?もしそうなら、どのように?
  2. 私のライブラリをウェブルートに置くことに大きなリスクがありますか、それともノードの動作方法でここで基本的な何かを見逃したことがありますか?
  3. 皆さんは何をしますか、本番アプリのベストプラクティスは何ですか?あなたの制作慣行とその理由の例をいくつか教えてください。
4

1 に答える 1

9

1.プロジェクト外のフォルダにモジュールを置くことは可能ですか?

はい。

2. Webルートにモジュールを含めることには大きなリスクがありますか?

「webroot」とは、サーバーのルートまたはプロジェクト外の任意のフォルダーを意味すると仮定します。はい。g-flagを使用して、npmでモジュールをグローバルにインストールすることができますnpm install -g express。異なるプロジェクトが同じモジュールの異なるバージョンに依存する可能性があるため、これは一般的に悪い習慣と見なされます。ローカルにインストールすると、プロジェクトごとにバージョンを変えることができます。

バージョン管理を使用していて、外部モジュールをチェックインしたくない場合、一般的な(およびnpmの標準)パターンは、 package.jsonファイル./node_modulesの依存関係を無視して指定することです。

3.「本番アプリのベストプラクティスは何ですか?」

SOにはあまり適していませんが、私はそれに取り組んでいるので、とにかくそれを試してみます。grunt (非常に人気のあるタスク自動化ツール)を使用すると、通常、次のような構造になります。

/my_project
  /node_modules
  /lib
    # actual project files
    /public
      # files that are meant to be sent to clients
  /test
  package.json # specifies dependencies, main script, version etc
  README.md # optional

この構造には、コアファイル、依存関係、およびテストをすべて同じフォルダーに保持しながら、明確に分離できるという利点があります。

于 2013-03-20T12:43:46.313 に答える