私が参加しているプロジェクトでは、これはnode_packages
のアーキテクチャです。
|- Django project
|-- app1
|-- app2
|-- node_modules
|--- foundation-sites
|--- grunt
|-- static
|--- css
|--- images
|--- js
|--urls.py
|--settings.py
|--package.json
私は個人的にnode_packages
がpackage.json
フォルダーと同様にjs
フォルダーの下のstaticにあるべきだと思います:
|- Django project
|-- app1
|-- app2
|-- static
|--- css
|--- images
|--- js
|---- node_modules
|----- foundation-sites
|----- grunt
|---- packages.json
|--urls.py
|--settings.py
違いはありますか?どちらがベストプラクティスですか?どうして?
すべてのjavascript関連ファイルを1か所に保存したいというあなたの考えを理解していますが、ここにnode_modules
フォルダーとpackage.json
ファイルDjangoアプリのstatic
ディレクトリから。
node_modules
フォルダーは実稼働環境に存在し、collectstatic
を実行するたびに同期していることを確認する必要があります。これは、ノードの依存関係構造がネストされているために時間がかかる場合があります。また、JSをバンドルしてトランスパイルするビルドステップがある場合、それらのソースファイルがstatic
内にある場合、理由もなく静的ファイルとしても提供されます。css
、またはDjango devサーバーがファイルを変更したとき、またはDjangoサーバーが再起動したときにブラウザーを自動リロードします。念頭に置いて、Node.jsをプロジェクトのどの部分にも触れることができるビルドプロセスのツールとして考える方が理にかなっているかもしれません。JavaScriptのバンドル/トランスコンパイルはその一部にすぎません。npm_modules
およびpackage.json
プロジェクトのトップレベルで:
npm_modules
から.gitignore
生成されたファイルのみを提供します。ソースコードをSTATICFILES_DIRS
(オプション)(bowerの代わりに)ベンダーなしでnpmモジュールを提供する場合は、 Django-npm などのツールを使用して、何を公開するかを指定します
サンプルプロジェクト:
一般的に、node_modules
は、Djangoアプリケーションの外側にある必要があります。Djangoアプリケーションに使用する一般的な形式は次のとおりです。
- AppName
---- appname (This is the Django Project)
---- appname-env (Python virtualenv)
---- bower_components
---- bower.json
---- gulpfile.js
---- node_modules
---- package.json
---- requirements.txt
次に、gulpを使用して、コンポーネントをノードモジュールまたはバウアーコンポーネントからアプリにコピーしますstatic/lib
ディレクトリ。