【问题标题】:Using Sass with Django在 Django 中使用 Sass
【发布时间】:2018-06-27 21:45:33
【问题描述】:

我正在寻找一个相当简单的工具集和工作流程来将 Sass 整合到我的 Django 项目中。我主要关注后端并且刚刚开始研究 Sass,所以请耐心等待。

我最初的想法是通过使用node-sass 来保持简单,而不是一开始就尝试合并 Gulp、django-pipeline 或其他任何东西。

我的 Django 应用程序的结构通常是这样的,我在每个应用程序中创建一个 static/app/css 文件夹。我想一个选择是现在为每个应用程序为 scss 文件创建一个附加文件夹,即:static/app/scss。问题是在生产中运行 collectstatic 时,scss 文件也会被收集。那么每个应用程序的 scss 文件是否应该保存在其他地方? (我想在 collectstatic 运行时是否包含 scss 文件并不重要?)

接下来,在我的 Django 项目文件夹之外,我将创建一个文件夹来安装 node-sass,因为我不想在全局范围内安装它,而且我不希望在我的 Django 项目或源代码控制中使用 node-modules 文件夹.

我猜 node-modules 文件夹可以被认为是使用 python virtualenv 而不是全局安装包?

接下来,在我的 Django 项目中的某个地方(不确定在哪里?)我将有一个 package.json 文件,其中包含我想要编译为 css 的每个 scss 文件的脚本部分,例如:

"scripts": {
    "compile:sass": "node-sass app1/static/app1/scss/style.scss app1/static/app1/css/style.css",
    "compile:sass": "node-sass app2/static/app2/scss/style.scss app2/static/app2/css/style.css",
    "compile:sass": "node-sass app3/static/app3/scss/style.scss app3/static/app3/css/style.css"
}

最后,我只需运行带有 watch 标志的 compile:sass 来不断编译我处理的任何文件并将它们放在正确的文件夹中。

所以我的问题是,上述设置是否是一个好方法(至少在最初,如果我还没有准备好添加另一个工具,如 Gulp 等)?

另外,我将如何运行 compile:sass 考虑到我的 package.json 文件将位于 Django 项目中的某个位置,而包含 node-sass 安装的 node-modules 文件夹将位于其他位置。

【问题讨论】:

  • 对我来说似乎很合理。将package.json 放在项目的根目录中,并将node_modules 保留在该目录中。只需忽略.gitignore中的目录@
  • 另外,您的package.json 中有这么多compile:sass 脚本有点奇怪。为什么不只制作一个 .scss 文件,将 imports 所有单独的 .scss 文件编译出来?
  • 感谢 cmets。我现在有了 node-sass 的合理项目布局和工作流程。根目录中的 package.json 和 node_modules (忽略 git)。 node-sass 使用 watch 标志不断运行。目前看来还不错。在适当的情况下,我还将只使用导入而不是多个脚本。
  • 是的常见模式(或至少我使用的模式)是拥有一个带有app.scss 的/static/styles/sass 目录。该目录有一个子目录pages,其中有_home_page.scss等。 app.scss 包含 @import "pages/home_page"; 以及所有其他“页面” sass 文件。
  • 然后将app.scss编译成/static/styles/css

标签: django sass node-sass


【解决方案1】:

我帮助维护 node-sass,所以我不会说不使用它。如果您正在使用 Python,则可能需要查看另一个 libsass-python。

【讨论】:

    【解决方案2】:

    查看django-sass-processor 包。它易于配置和使用。我已经使用了几次,并且有很好的体验。该包抽象了 Gulp,因此您不必担心它并简化了整个过程。

    这是一个关于 how to integrate django-sass-processor 进入 Django 项目的教程。

    【讨论】:

      猜你喜欢
      • 2014-09-19
      • 2020-03-21
      • 2013-09-05
      • 1970-01-01
      • 2021-09-27
      • 2019-09-13
      • 1970-01-01
      • 2020-01-21
      相关资源
      最近更新 更多