我最近将 npm 添加到了我的项目中,以便更好地跟踪我的js依赖项。以前我只是git克隆到我的static / vendor文件夹。
我还添加了 gulp ,但是现在只在做世界性的事情了。看起来很简单-它可以监视文件,缩小资产,编译Sass。最终,我可能会切换到 Webpack ,但是gulp很简单并且可以立即使用。我不想使用 django-compressor 或 django-pipeline 。
因此,假设我运行npm install vis
来插入visjs。它将添加到node_modules
,并将记录添加到package.json
依赖项。
A)我是否在模板脚本的node_mods中直接引用vis / dist?
<script src="/node_modules/vis/dist/min-vis.js' %}"></script>
# right now it's <script src="{% static 'vendor/min-vis.js' %}"></script
B) gulp是否应该侦听package.json依赖项的更改,并在看到更改后将vis / dist复制到static / vendor或static / js?
当人们谈论npm和gulp时,我一直看到人们谈论处理STATICFILE_DIRS。现在我的只是设置为以下内容。会改变吗?
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
答案 0 :(得分:1)
STATICFILES_DIRS
告诉Django在哪里可以找到所有静态资产(稍后将“收集”用于部署,但是暂时我们可以忽略它)。该设置将需要包括您已gulp
放置处理过的资产的任何位置,或者您也可以将它们放入$BASE_DIR/static
中,以避免在需要时更改设置。
从那里开始,您应该使用static
templatetag
{% load static %}
<script src="{% static 'your_bundled_asset.min.js' %}"></script>
请注意,如果您的资产位于嵌套目录的STATICFILES_DIRS
下,则可能需要添加前缀。 {% static 'js/asset.min.js' %}
。
因此Django在部署时可以使用开发位置($BASE_DIR/static
)或“收集”位置(./manage.py collectstatic --noinput
将所有静态文件拉到一个位置以简化服务)。