【发布时间】: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