【问题标题】:Use SASS (from command line) and Autoprefixer (for Bootstrap 4.x)使用 SASS(从命令行)和 Autoprefixer(用于 Bootstrap 4.x)
【发布时间】:2019-06-23 11:06:43
【问题描述】:

我最近开始使用 scss 文件,尤其是自定义 Bootstrap

要编译我的 scss 文件(以及引导程序),我从命令行使用 sass

例子:

sass /path/to/scss/bootstrap/mycustom.scss /path/to/css/bootstrap.min.css -t compressed -C --sourcemap=none

mycustom.scss 是这样的:

 $theme-colors: (
     "custom-primary": "...",
     "custom-secondary": "..."
 );
 ....
 ....
 @import "bootstrap";

这样我可以根据自己的喜好自定义引导程序,没有问题。


然而,今天,我意识到图形组件(自定义选择)未正确呈现。经过一番研究,我发现这是由于在编译过程中缺少 Autoprefixer 造成的,因此我的 bootstrap.min.css 中没有添加一些 css 属性。

我在 Bootstrap 文档中找到了这个:https://getbootstrap.com/docs/4.2/getting-started/build-tools/#autoprefixer

但我找不到使用 Autoprefixer 编译 Bootstrap(使用 sass)的解决方案。

【问题讨论】:

  • this 有帮助吗?
  • 嗯,不,同样在bassjobsen.weblogs.fm/prepared-bootstrap-v4提供的链接中没有解决方案
  • 您是否愿意改变您的工作流程,或者只是想知道如何将 Autoprefixer 与 SASS 结合使用?
  • 如果可能的话,我更愿意使用 SASS 和 Autoprefixer

标签: twitter-bootstrap sass bootstrap-4 autoprefixer


【解决方案1】:

这与我面临的问题完全相同。所以我在互联网上看了很多,找到了解决这个问题的一种可能的方法。您可以使用NPM(节点包管理器)解决此问题。阅读thisthis Article

你需要什么,

创建一个 package.json 文件或运行npm init

按照文章中的说明创建您的命令

在您的情况下添加您的devDependencies node-sass autoprefixer onchangepostcss-cli

运行npm install,(安装所有软件包后)

运行npm start

这就是我的做法例如

package.json

{
  "name": "web_name",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "devDependencies": {
    "autoprefixer": "^9.4.2",
    "node-sass": "latest",
    "onchange": "^5.2.0",
    "postcss-cli": "latest"
  },
  "scripts": {
    "build:sass": "node-sass --output-style=expanded --source-map=true assets/scss/style.scss assets/css/style.css",
    "prefix": "npm run build:sass && postcss assets/css/style.css --use=autoprefixer --output=assets/css/style.css",
    "start": "onchange \"assets/scss/**/*.scss\" -- npm run prefix"
  },
  "browserslist": [
    "last 2 versions"
  ],
  "repository": {
    "type": "git",
    "url": "Repo/Path"
  },
  "keywords": [
    "SASS"
  ],
  "author": "Ismail Farooq",
  "license": "ISC",
  "homepage": "Path",
  "dependencies": {}
}

根结构

Sass 文件夹结构

【讨论】:

  • 您好,感谢您的帮助。一些注意事项:1)我需要将我的 CLI SASS 编译器从 this 更改为 this,对吗? 2) 在我全局使用 sass 之前,它没有安装在单个项目中,如果可能的话,我想继续这样使用它 3) 可以不使用 onchange 包吗?我更喜欢在需要时手动编译 scss 文件
  • 在此处查看示例 jsfiddle.net/e5rxLq4p @WhiteLine 现在,每次需要编译时,您都必须在命令上运行 npm start
  • 1) 正确,Node sass 基本上是将 sass 编译为 css 的节点包 2) 你的意思是什么,请你再清除一下 3) onChange 只是检测你的文件更改我没有尝试手动编译但我相信可以通过更改 package.json 中的 Script > Start 命令来尝试
  • ... 对于第 2 点)我的意思是,在我的 Web 项目中,我不使用任何包管理器来维护我使用的各种库的依赖关系。我开始使用 NPM 下载 sass 并能够从终端使用它来编译我的 web 项目中存在的 scss 文件(全部在网络文件夹中)。我在我的 Mac 上全局安装了 sass,并指向我的网络文件夹中的各种 web 项目(其中包含我所有的 web 项目)我每次在项目中编辑 scss 文件时手动编译 scss 文件。
  • 示例:sass /path-to-network-folder-projects/project1/scss/main.scss /path-to-network-folder-projects/project1/css/main.css -t compressed -C --sourcemap=none
【解决方案2】:

在我全局安装post-cssautoprefixer之后

npm install -g postcss-cli autoprefixer

我运行以下命令以使用 autoprefixer 重新加载我的 CSS 文件。

postcss assets/theme.css --replace --use autoprefixer

注意:一旦我处理了一个同时处理 SASS CLI 和 Autoprefixer 的命令,我将更新这篇文章

Edit-1:您可以组合 2 个终端命令并编译和缩小 Bootstrap SCSS,然后运行 ​​Autoprefixer 以仅使用一个命令添加供应商前缀:

sass scss/theme.scss:assets/theme.min.css --style=compressed && postcss assets/theme.min.css --replace --use autoprefixer

【讨论】:

  • 谢谢。我正在使用这个解决方案!
【解决方案3】:

我猜你正在使用 npm 将 scss 转换为 css。

只需要安装带有 autoprefixer 插件的 postcss。 然后在命令行中代替 sass,您需要在命令行中使用 postcss 来转换为 css。 请参考https://www.npmjs.com/package/postcss#npm-run--cli

【讨论】:

    【解决方案4】:

    你不能让引导程序和你的自定义 css 不同吗?传统上,我们尝试通过使用另一种外部样式来用我们的自定义 css 覆盖引导程序,同样,如果您想学习 sass,请尝试使用 sass 创建新的外部样式表,保持引导代码不变,并在引导程序导入下方添加自定义样式,仅包括main.scss 包含您的自定义样式

    【讨论】:

    • 是的,但是 css 的流动仍然是自上而下的,所以现在让 bootstrap untouch 比我们可以在直播时删除我们不想要的东西
    • 但是 OP 想要一个适当的动态解决方案,这就是他在这个问题上添加赏金的原因。
    • 让我们看看白线想要什么
    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2019-07-05
    • 2014-02-17
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多