我正在努力django-require
管理 JS 依赖项和缩小。但是,我在使用 requireJS 时遇到了困难baseUrl
。
require.js
是 at project/static/require.js
,页面 JS 是 atproject/static/pages/pageA.js
等等。
以下是 django-require 设置。
REQUIRE_BASE_URL = os.path.join(PROJECT_DIR, 'static')
REQUIRE_BUILD_PROFILE = 'app.build.js'
REQUIRE_JS = "require.js"
REQUIRE_STANDALONE_MODULES = {}
REQUIRE_DEBUG = DEBUG
REQUIRE_EXCLUDE = ("build.txt",)
REQUIRE_ENVIRONMENT = "auto"
在静态文件收集/处理期间以及通过浏览器提供服务时,我无法使基本 URL 正确。如果我这样设置:
REQUIRE_BASE_URL = os.path.join(PROJECT_DIR, 'static')
那么编译过程就成功了(node
findsr.js
等等)。然而,像这样{% require_module pages/pageA %}
渲染的模板标签是这样的:
<script data-main="/var/www/project/static/pages/pageA.js" src="/var/www/project/static/require.js"></script>
这从浏览器端失败,因为路径是机器实际文件系统上的路径,而不是网站结构中的路径!
但是,如果我这样设置基本 URL:
REQUIRE_BASE_URL = 'static'
然后编译步骤失败,因为r.js
正在使用本地文件系统上不存在的路径调用(但会存在于网站上):
File "/usr/local/lib/python2.7/dist-packages/require/storage.py", line 50, in run_optimizer
raise OptimizationError("Error while running r.js optimizer.")
在这种情况下,呈现的脚本标签是正确的。
提供本地文件路径的正确方法是什么r.js
,但在模板标签中输出与网站相关的路径django-require
?
编辑:也在这里发布到 django-require 邮件列表。