在我加入的项目中,这是node_packages
的体系结构:
|- Django project
|-- app1
|-- app2
|-- node_modules
|--- foundation-sites
|--- grunt
|-- static
|--- css
|--- images
|--- js
|--urls.py
|--settings.py
|--package.json
我个人认为node_packages
应该在js
文件夹下的static以及package.json
中,如下所示:
|- Django project
|-- app1
|-- app2
|-- static
|--- css
|--- images
|--- js
|---- node_modules
|----- foundation-sites
|----- grunt
|---- packages.json
|--urls.py
|--settings.py
有区别吗?哪一个是最佳实践?为什么?
一般来说,
node_modules
应该在Django应用程序之外。我用于Django应用程序的典型格式如下:然后我使用gulp将节点模块或bower组件中的组件复制到我的app
static/lib
目录中。把
npm_modules
和package.json
放在项目的顶层:npm_modules
添加到.gitignore
只提供生成的文件。把源代码放在外面
STATICFILES_DIRS
(可选)如果您想在没有供应商(而不是bower)的情况下为一些npm模块提供服务,请使用django-npm这样的工具来指定将公开的内容
示例项目:
https://github.com/mbrochh/django-reactjs-boilerplate
https://github.com/Seedstars/django-react-redux-base
我理解您希望将所有与javascript相关的文件保存在一个地方的想法,但这里有两个原因您可能希望将
node_modules
文件夹和package.json
文件保存在Django应用程序的static
目录之外。node_modules
文件夹,则运行collectstatic
时必须检查它是否每次都处于同步状态,这可能是由于节点嵌套的依赖结构而导致的。假设您有一个构建步骤来捆绑和传输您的JS,如果这些源文件在static
内,那么它们也将毫无理由地作为静态文件使用。css
,或者在Django dev服务器周围运行代理服务器,在文件更改或Django服务器重新启动时自动重新加载浏览器。考虑到这一点,将Node.js看作构建过程中可以触及项目任何部分的工具可能更有意义,JavaScript的捆绑/传输只是其中的一部分。相关问题 更多 >
编程相关推荐