Has*_*tax 7 django frontend npm django-staticfiles gulp
我最近在我的项目中添加了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
Run Code Online (Sandbox Code Playgroud)
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'),
)
Run Code Online (Sandbox Code Playgroud)
STATICFILES_DIRS告诉 Django 在哪里可以找到所有静态资产(稍后将被“收集”以进行部署,但我们暂时可以忽略它)。该设置需要包括您gulp放置已处理资源的位置,或者如果您愿意,您可以让 gulp 将它们放入$BASE_DIR/static以避免更改您的设置。
从那里,您应该使用statictemplatetag
{% load static %}
<script src="{% static 'your_bundled_asset.min.js' %}"></script>
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的资源位于STATICFILES_DIRS其所在条目下的嵌套目录中,则可能需要为其添加前缀。{% static 'js/asset.min.js' %}。
因此,Django 可以在部署时使用开发位置 ( $BASE_DIR/static) 或“收集”位置(./manage.py collectstatic --noinput将所有静态文件拉到一个位置以简化服务)。