Gulp Sass
最后修改于 2023 年 10 月 18 日
在本文中,我们将展示如何使用 gulp-sass 插件将 Sass 编译为 CSS。
Gulp
Gulp 是一个 Node 任务运行器。它是前端 Web 开发中的一个流式构建系统。它有助于自动化诸如复制文件、缩小 JavaScript 代码或将 TypeScript 或 CoffeeScript 编译为 JavaScript 等任务。
Sass
Sass 是一种预处理器脚本语言,它被解释或编译为层叠样式表 (CSS)。Sass 有两种语法;旧语法使用缩进分隔代码块,使用换行符分隔规则。
较新的 SCSS 语法使用类似 CSS 的块格式。它使用大括号表示代码块,并使用分号分隔块内的行。缩进语法和 SCSS 文件通常分别使用扩展名 .sass
和 .scss
。
gulp-sass 插件
gulp-sass
是一个用于将 Sass 编译为 CSS 的 Gulp 插件。它在内部使用 node-sass
模块。
安装 Gulp 和 gulp-sass
我们初始化一个 Node.js 项目并安装 Gulp 和 gulp-sass
插件。
$ npm init -y $ npm i --global gulp-cli $ npm i gulp --save-dev
我们初始化一个 Node 项目并安装 Gulp 和 Gulp CLI。
$ npm i --save-dev gulp-sass $ npm i --save-dev del
我们安装 gulp-sass
插件和 del
模块,该模块使用 Promise API 删除文件,并支持多个文件和 globbing。
Gulp-sass 示例
以下示例演示了 gulp-sass
模块的用法。
$ mkdir sass $ mkdir css $ touch index.html gulpfile.js sass/main.scss
我们创建两个目录和三个空文件。
. │ gulpfile.js │ index.html │ node_modules │ package-lock.json │ package.json │ ├───css └───sass main.scss
这是项目结构。index.html
文件使用 CSS 进行布局。CSS 被生成到 css
目录中。SCSS 位于 sass
目录下的 main.scss
文件中。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="css/main.css"> <title>Bugs</title> </head> <body> <div class="container"> <h1>Bugs</h1> <table> <tr> <th>Bug name</th> <th>Description</th> </tr> <tr> <td>Assasin bug</td> <td>The assassin bug uses its short three-segmented beak to pierce its prey and eat it.</td> </tr> <tr> <td>Bed bug</td> <td>Bed bugs are parasitic insects in the that feed exclusively on blood.</td> </tr> <tr> <td>Carpet beetle</td> <td>Considered a pest of domestic houses and, particularly, natural history museums where the larvae may damage natural fibers and can damage carpets, furniture, clothing, and insect collections.</td> </tr> <tr> <td>Earwig</td> <td>Earwigs are mostly nocturnal and often hide in small, moist crevices during the day, and are active at night, feeding on a wide variety of insects and plants.</td> </tr> </table> </div> </body> </html>
这是 index.html
文件。link
标签包含来自 css/main.css
文件的 CSS。
$myfont: Georgia 1.2em; $table_head_col: #ccc; $table_row_col: #eee; $table_bor_col: #eee; $container_width: 700px; $first_col_width: 150px; div.container { margin: auto; font: $myfont; width: $container_width; } table { tr:nth-child(odd) {background: $table_row_col} td:first-child {width: $first_col_width} th { background-color: $table_head_col; } border: 1px solid $table_bor_col; }
这是要编译为 CSS 的 SCSS 代码。
const gulp = require('gulp'); const sass = require('gulp-sass'); const del = require('del'); gulp.task('styles', () => { return gulp.src('sass/**/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(gulp.dest('./css/')); }); gulp.task('clean', () => { return del([ 'css/main.css', ]); }); gulp.task('default', gulp.series(['clean', 'styles']));
这是包含我们的 Gulp 任务的 gulpfile.js
。
gulp.task('styles', () => { return gulp.src('sass/**/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(gulp.dest('./css/')); });
gulp.task()
创建一个新任务,我们称之为 styles
。gulp.src()
创建一个用于读取所有 SCSS 文件的流。通过 pipe()
,我们将流式数据传递给 sass
编译器。最后,我们将编译后的数据传递给 gulp.dest()
,它进而创建一个将数据写入文件系统的流。
gulp.task('clean', () => { return del([ 'css/main.css', ]); });
clean
任务会删除生成的 CSS 文件。
gulp.task('default', gulp.series(['clean', 'styles']));
默认任务是在不指定 Gulp CLI 任务名时执行的任务。它按顺序运行 clean
和 styles
任务。
$ gulp [13:07:10] Using gulpfile ~\Documents\js\gulpsass\gulpfile.js [13:07:10] Starting 'default'... [13:07:10] Starting 'clean'... [13:07:10] Finished 'clean' after 4.11 ms [13:07:10] Starting 'styles'... [13:07:11] Finished 'styles' after 14 ms [13:07:11] Finished 'default' after 23 ms
我们运行默认任务。CSS 文件已生成。
Gulp watch 任务
我们可以使用 gulp.watch()
来自动监视更改。
gulp.task('watch', () => { gulp.watch('sass/**/*.scss', (done) => { gulp.series(['clean', 'styles'])(done); }); });
请注意,监视文件可能会占用大量资源;因此,我们应该谨慎使用 gulp.watch()
。
在本文中,我们使用 Gulp 将 SCSS 代码编译为 CSS。
您可能还对以下相关教程感兴趣:Node Sass 教程、Gulp 缩小教程、Datatables JSON Server 教程 或 Handsontable 教程。