如何使用node-sass(无Ruby)编译或将sass / scss转换为css?

2023-12-20

我在设置 libsass 时遇到了困难,因为它不像基于 Ruby 的转译器那么简单。有人可以解释一下如何:

  1. 安装libsass?
  2. 从命令行使用它?
  3. 与 gulp 和 grunt 等任务运行程序一起使用吗?

我对包管理器的经验很少,对任务运行器的经验更少。


我为 libsass 选择了 node-sass 实现器,因为它基于 node.js。

安装node-sass

  • (前提)如果你没有npm,请安装Node.js https://nodejs.org/ first.
  • $ npm install -g node-sass全局安装node-sass-g.

如果没有阅读底部的 libsass,这将有望安装您需要的所有内容。

如何从命令行和 npm 脚本使用 node-sass

通用格式:

$ node-sass [options] <input.scss> [output.css]
$ cat <input.scss> | node-sass > output.css

例子:

  1. $ node-sass my-styles.scss my-styles.css手动编译单个文件。
  2. $ node-sass my-sass-folder/ -o my-css-folder/手动编译文件夹中的所有文件。
  3. $ node-sass -w sass/ -o css/每当修改源文件时,都会自动编译文件夹中的所有文件。-w添加对文件更改的监视。

更有用的选项,例如“压缩”@ here https://github.com/sass/node-sass#command-line-interface。命令行非常适合快速解决方案,但是,您可以使用 Grunt.js 或 Gulp.js 等任务运行器来自动化构建过程。

您还可以将上述示例添加到 npm 脚本中。正确使用 npm 脚本作为吞咽的替代品 read 这篇综合文章@css-tricks.com https://css-tricks.com/why-npm-scripts/特别是阅读关于分组任务 https://css-tricks.com/why-npm-scripts/#article-header-id-11.

  • 如果没有package.json文件在你的项目目录中运行$ npm init将创建一个。与它一起使用-y跳过问题。
  • Add "sass": "node-sass -w sass/ -o css/" to scripts in package.json文件。它应该看起来像这样:
"scripts": {
    "test" : "bla bla bla",
    "sass": "node-sass -w sass/ -o css/"
 }
  • $ npm run sass将编译您的文件。

如何与 gulp 一起使用

  • $ npm install -g gulp全局安装 Gulp。
  • 如果没有package.json文件在你的项目目录中运行$ npm init将创建一个。与它一起使用-y跳过问题。
  • $ npm install --save-dev gulp本地安装 Gulp。--save-dev adds gulp to devDependencies in package.json.
  • $ npm install gulp-sass --save-dev在本地安装 gulp-sass。
  • 通过创建一个来为您的项目设置 gulpgulpfile.js项目根文件夹中的文件包含以下内容:
'use strict';
var gulp = require('gulp');

一个基本的转译示例

将此代码添加到您的 gulpfile.js 中:

var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
  gulp.src('./sass/**/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('./css'));
});

$ gulp sass运行上述任务,编译 .scss 文件sass文件夹并在其中生成 .css 文件css folder.

为了让生活更轻松,让我们添加一个手表,这样我们就不必手动编译它。将此代码添加到您的gulpfile.js:

gulp.task('sass:watch', function () {
  gulp.watch('./sass/**/*.scss', ['sass']);
});

现在一切都准备好了!只需运行监视任务:

$ gulp sass:watch

如何与 Node.js 一起使用

正如node-sass 的名称所暗示的,您可以编写自己的node.js 脚本进行转译。如果您好奇,请查看 node-sass 项目页面。

那么 libsass 呢?

Libsass 是一个需要由 sassC 或在我们的例子中的 node-sass 等实现者构建的库。 Node-sass 包含默认使用的 libsass 的构建版本。如果构建文件无法在您的计算机上运行,​​它会尝试为您的计算机构建 libsass。此过程需要 Python 2.7.x(3.x 目前无法运行)。此外:

LibSass 需要 GCC 4.6+ 或 Clang/LLVM。如果您的操作系统较旧,则此版本可能无法编译。在 Windows 上,您需要带有 GCC 4.6+ 或 VS 2013 Update 4+ 的 MinGW。还可以在 Windows 上使用 Clang/LLVM 构建 LibSass。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用node-sass(无Ruby)编译或将sass / scss转换为css? 的相关文章

  • 优化 CSS 交付 - Google 的建议

    谷歌建议在 head 中使用非常重要的 CSS 内联 并在内部使用其他 CSS
  • SELECT 元素中的图像[重复]

    这个问题在这里已经有答案了 我知道如何使用 CSS 背景图像属性让图片显示在 HTML 下拉表单元素中的选项旁边 但是 图像不会显示在所选元素上 有什么方法可以做到这一点 最好只使用CSS EDIT 这是列表元素的工作代码的示例 但是 当下
  • :target 伪类在 Firefox 中无法正常工作

    我正在使用 target 伪类制作一个具有 CSS 灯箱类型效果的页面 当您单击图像时 会弹出一个包含信息的框 当您单击任意位置时 该框会再次消失 它在 Chrome 和 IE 中运行良好 但在 Firefox 中存在一个奇怪的错误当您将鼠
  • onclick 函数上的 CSS 选择器

    有没有办法让CSS选择器onclick function 您可以在onclick https stackoverflow com questions 24365416 select element which have specific a
  • 使用 jQuery 检测容器溢出?

    我见过这个问题 https stackoverflow com questions 2059743 detect elements overflow using jquery但感觉必须有一个 更干净 的 jQuery 方法来做到这一点 我什
  • 新BFC“清”浮箱

    如示例所示 应用display inline block 到包含块似乎 清除 了其中的浮动框 wrapper inline block display inline block left column background color te
  • (CSS) 倾斜 img 框架而不扭曲图像

    我正在制作一个包含许多倾斜元素的网站 如下所示 这还不错 CSS 转换可能会扭曲它 但是这个怎么样 图像没有扭曲 只是框架以倾斜的方式裁剪 最简单 最好的方法是什么 I think this http codepen io antiblan
  • 在 jQuery 中获取 CSS 规则的百分比值

    假设规则如下 largeField width 65 有没有办法以某种方式恢复 65 而不是像素值 Thanks EDIT 不幸的是 在我的例子中使用 DOM 方法是不可靠的 因为我有一个导入其他样式表的样式表 因此cssRules参数以以
  • 左对齐图像和居中文本在 div 内的同一级别?

    HTML br div class UpperTitle img src align left CableSolve Web Dashboard Version 0 1 1 div br CSS UpperTitle text align
  • MVC4 捆绑:由于 css3 功能而缩小失败?

    我想使用 MVC4 捆绑和缩小 但我总是在未缩小的 css 文件中收到此错误消息作为注释 Minification failed Returning unminified contents 534 29 run time error CSS
  • IE9-11 检测变换样式:preserve-3d

    我为一个项目制作了一个 3d 类型的菜单 自然 IE 会引起问题 因为 IE10 即使 3d 变换工作 也不支持变换样式 preserve 3d 我尝试了解决方法 通过对 3d 菜单容器的每个子元素应用变换 但至少可以说 动画看起来很糟糕
  • 控制缓存过期

    通过 Google 网站管理员工具的 PageSpeed 分析器运行我的网页后 它向我报告我的资源没有被缓存 下面是我的 htaccess 文件中直接取自 H5BP 的代码 我是否正确地假设以下过期时间设置正确 但我的实现中出现了问题 或者
  • Outlook 有条件 CSS If 吗?

    我需要一些特定的 css 来发送 html 电子邮件 但仅限于 Outlook 我正在寻找相当于
  • 无限水平滚动图像循环?

    所以我试图在我的网站上创建一个无限滚动动画 但我一直在努力 原始教程在这里 使用 6 张图像 最后重复 4 张图像以实现无缝过渡 https designshack net articles css infinitephotobanner
  • 将图例标签设置为块

    我已经在以下网址设置了我的问题的演示 http jsfiddle net YHHg7 4 http jsfiddle net YHHg7 4 我正在尝试执行以下操作 legend display block border bottom 1p
  • 在Android中将半径边框绘制到imageview或textview的一个角落

    我需要在我的应用程序中为图像视图或文本视图绘制边框 但我只需要在一个角落绘制它 就像图像一样 我做了一个形状 但我在所有 4 个边上都有边框
  • 如何计算单击的甜甜圈元素的中点与负 y 轴之间的角度

    Consider the following codesample donut chart using jquery flot http jsfiddle net c5zsg6y3 26 now as i have added the im
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • CSS 未在 Django 项目中加载?

    我是 Django 新手 但负责该项目的前端工作 我一直在研究如何准确加载 css 文件 但我发现这些方法不起作用 这是 html 文件布局 load static
  • 中有样式表 吗?

    在内部链接 CSS 文件是一个坏主意吗 body 我读过 如果浏览器在外部找到另一个 CSS 文件 则它会被迫重新开始 CSS 渲染 head 只是因为它可能需要将样式应用于已经渲染的元素 另外 我认为 HTML 无法正确验证 我需要确认这

随机推荐