我希望在我的django项目中使用date-fns,但不完全确定如何进行-我不能依赖CDN,需要以某种方式安装它。我在根文件夹中运行了npm init
,然后运行了npm install date-fns
。这将生成一个node_modules文件夹和一个package.json文件。
不完全确定在此之后该如何处理。必要的步骤是什么?
我是否只需使用
<script src="{% static 'node_modules/date-fns' %}"></script>
在我的base.html文件里?
发布于 2021-04-28 09:30:53
使用static
模板运算符时使用的搜索路径在STATICFILES_DIR
(docs)中的settings.py
文件中定义。这将允许静态操作符查找库文件并生成URL。
但是,请注意,web服务器仍然需要从STATIC_URL
定义的预期路径提供文件。项目根目录中的manage.py
工具包含一个命令collectstatic
,该命令可以将所有静态搜索目录复制到一个位置,从而使提供这些文件变得更简单。
还请注意,您显示了一个代码示例,它从script标记中将npm库目录作为脚本引用,但是浏览器将不知道如何从该目录中查找脚本。node
通常使用库的package.json
来查找入口点。有必要专门调出包中感兴趣的脚本文件。
一种选择是使用捆绑工具,如webpack或rollup,将所有资源收集到一个位置。
另一种选择是将node_modules路径添加到静态路径,可能带有前缀。它可能看起来像下面这样。
STATIC_URL = '/static/'
STATIC_ROOT = 'dist/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
# This defines a prefix so the url paths will become `/static/node_modules/...`
('node_modules', os.path.join(BASE_DIR, 'node_modules/')),
)
明确地包括index.js
,而不仅仅是模板文件中的date-fns。
{% load static %}
<!-- .... -->
<script src="{% static 'node_modules/date-fns/index.js' %}"></script>
如果从STATIC_ROOT
收集和提供静态文件,则以下命令将把STATICFILES_DIRS
内容收集到dist/static
中。
python manage.py collectstatic
https://stackoverflow.com/questions/63552207
复制相似问题