目录
钥匙要点
>我们在SitePoint上有一篇关于Sourcemaps的精彩文章。如果您对Sourcemaps的理解有些不足,请随时对其进行阅读。
>如何使用Gulp?
此任务将在您的SASS目录中获取所有.scss文件,使用Gulp-sass将其编译为CSS,然后输出所得的CSS文件您的CSS目录。
首页 web前端 js教程 一个简单的Gulp' y的工作流程

一个简单的Gulp' y的工作流程

Feb 19, 2025 pm 12:40 PM

一个简单的Gulp' y的工作流程

钥匙要点

  • 大量的工作流可以改善大型铁轨项目中的SASS汇编时间,远离资产管道并拥抱Libsass的速度。
  • gulp工作流程包括使用libsass的SASS编译,生成sourcemaps,以更容易调试,将CSS与AutopReFixer一起前缀,并使用SASSDOC生成Sass Document。
  • >可以通过添加监视样式显示器更改以重新编译的手表任务来进一步优化工作流程,从而消除了每个文件保存后手动运行SASS任务的需求。
  • >可以创建一个用于部署到生产的“产品”任务,该任务以压缩模式编译了SASS,带有AutoPrefixer的前缀CSS,再生SASSDOC文档,并避免使用任何sourcemaps。
  • >我最近负责优化相当大的铁路项目的萨斯一侧,最重要的事情之一就是改善汇编时间。由于存在SASS架构以及Ruby Sass(在这种情况下通过Rails Asset Pipeline)在处理大量文件时往往会很慢,因此编译样式表的最多可能需要40秒钟。谈论快速开发过程。 :)
我的想法是远离资产管道,拥抱libsass的速度。为了使事情变得更容易,我决定使用简单的Gulp工作流程。这是我第一次使用大口,我必须说这是一个非常愉快的经历(就我而言,这不是咕unt的情况)。

在这篇简短的文章中,让我们快速浏览如何建立大量的工作流程以与Sass合作。这是我们将包括的内容:

毫不奇怪,用libsass

汇编

生成sourcemaps,以便更轻松的调试
  • >用自动旋转器前缀CSS
  • 用sassdoc
  • 生成sass文档
  • 编译SASS
  • 观看Atoz:Sass 通过信函学习萨斯
  • 观看此课程 观看此课程
  • >要做的第一件事是安装依赖项并创建Gulpfile.js。我们将需要吞噬(不屎,夏洛克),但也需要散发出我们的样式表:
>

>该行告诉NPM将Gulp和Gulp-Sass软件包同时安装作为开发依赖项。现在,您可以在软件包的devDecondies.json中找到它们。和gulpfile.js:一个简单的Gulp' y的工作流程

哇,那很短。我们现在需要的是
$ <span>npm install gulp gulp-sass --save-dev</span>
登录后复制
登录后复制
登录后复制
任务

在我们的stylesheets文件夹上运行sass(实际上是gulp-sass)。

$ <span>npm install gulp gulp-sass --save-dev</span>
登录后复制
登录后复制
登录后复制
就是这样!现在,由于一项非常小的Gulp任务,我们可以使用Libsass来编译样式表。那呢?我们可以将选项传递给Gulp-sass,以在扩展模式下编译样式表,并在控制台中打印错误:>

添加Sourcemaps
<span>var gulp = require('gulp');
</span><span>var sass = require('gulp-sass');</span>
登录后复制
登录后复制
到目前为止,一切都很好。现在,生成Sourcemaps呢?如果您不知道什么是Sourcemaps,它基本上是一种用扩展的开发来源绘制压缩生产源的方式,以使调试实时代码更加容易。它们根本不限于CSS,也可以在JavaScript中使用Sourcemaps。

>我们在SitePoint上有一篇关于Sourcemaps的精彩文章。如果您对Sourcemaps的理解有些不足,请随时对其进行阅读。

>

好吧,因此,要在我们的任务中添加SourceMaps生成,我们需要安装Gulp-Sourcemaps:>

现在,让我们优化我们的任务:

默认情况下,Gulp-Sourcemaps在编译的CSS文件中写入Sourcemaps。根据项目设置的不同,我们可能需要在单独的文件中写入它们,在这种情况下,我们可以在sourcemaps.write.write()函数中指定相对于gulp.dest()目标的路径。

<span>var input = './stylesheets/**/*.scss';
</span><span>var output = './public/css';
</span>
gulp<span>.task('sass', function () {
</span>  <span>return gulp
</span>    <span>// Find all `.scss` files from the `stylesheets/` folder
</span>    <span>.src(input)
</span>    <span>// Run Sass on those files
</span>    <span>.pipe(sass())
</span>    <span>// Write the resulting CSS in the output folder
</span>    <span>.pipe(gulp.dest(output));
</span><span>});</span>
登录后复制
登录后复制
>将AutopReFixer带到派对

>我不会详细介绍为什么使用AutoPrefixer比手工编写供应商更好(或使用Mixin(基本上是同一件事)更好),但是粗略的AutopReFixer是一个后处理步骤基于最新数据库和给定配置的样式表添加相关前缀。换句话说,您告诉您要支持的autoprefixer,它仅在样式表中添加相关的前缀。零努力,完美的支持(请提醒我为此插图申请专利)。
<span>var sassOptions = {
</span>  <span>errLogToConsole: true,
</span>  <span>outputStyle: 'expanded'
</span><span>};
</span>
gulp<span>.task('sass', function () {
</span>  <span>return gulp
</span>    <span>.src(input)
</span>    <span>.pipe(sass(sassOptions).on('error', sass.logError))
</span>    <span>.pipe(gulp.dest(output));
</span><span>});</span>
登录后复制
登录后复制
>

要在我们的Gulp’y工作流中包括自动旋转器,我们只需要在SASS完成它的工作后才需要 pipe

>。然后自动改装器更新样式表以添加前缀。>
$ <span>npm install gulp-sourcemaps --save-dev</span>
登录后复制
登录后复制
首先,让我们安装它(您现在就可以得出要点):

>

然后我们将其添加到我们的任务中:

>现在,我们使用autoprefixer的默认配置运行,

浏览器的市场份额超过1%,

所有浏览器的最后2个版本,
<span>var gulp = require('gulp');
</span><span>var sass = require('gulp-sass');
</span><span>var sourcemaps = require('gulp-sourcemaps');
</span>
<span>// ... variables
</span>
gulp<span>.task('sass', function () {
</span>  <span>return gulp
</span>    <span>.src(input)
</span>    <span>.pipe(sourcemaps.init())
</span>    <span>.pipe(sass(sassOptions).on('error', sass.logError))
</span>    <span>.pipe(sourcemaps.write())
</span>    <span>.pipe(gulp.dest(output));
</span><span>});</span>
登录后复制
登录后复制

> firefox ESR,

gulp<span>.task('sass', function () {
</span>  <span>return gulp
</span>    <span>.src(input)
</span>    <span>.pipe(sourcemaps.init())
</span>    <span>.pipe(sass(sassOptions).on('error', sass.logError))
</span>    <span>.pipe(sourcemaps.write('./stylesheets/maps'))
</span>    <span>.pipe(gulp.dest(output));
</span><span>});</span>
登录后复制
登录后复制
Opera 12.1

    我们可以使用自己的配置这样:
  • 释放文档!
  • >最后但并非最不重要的是用sassdoc添加我们的工作流程文档生成的工具。 SASSDOC是要解决JSDOC的JavaScript:文档工具。它可以解析您的样式表寻找评论块,记录变量,混音,功能和占位符。
  • 如果您的项目使用SASSDOC(应该!),则可以在Gulp Workflow中添加自动文档生成。
  • SASSDOC的酷炫事物是可以将其直接输送到Gulp中,因为它的API是兼容的。因此,您实际上没有Gulp-sassdoc插件。

    $ <span>npm install gulp gulp-sass --save-dev</span>
    登录后复制
    登录后复制
    登录后复制
    请注意,根据您的项目的大小和已记录的项目数量,SassDoc最多可以运行几秒钟(据我所知,很少超过3个)为此单独任务。
    <span>var gulp = require('gulp');
    </span><span>var sass = require('gulp-sass');</span>
    登录后复制
    登录后复制

    再次,我们使用默认配置,但是如果愿意,我们可以使用自己的配置。>

    <span>var input = './stylesheets/**/*.scss';
    </span><span>var output = './public/css';
    </span>
    gulp<span>.task('sass', function () {
    </span>  <span>return gulp
    </span>    <span>// Find all `.scss` files from the `stylesheets/` folder
    </span>    <span>.src(input)
    </span>    <span>// Run Sass on those files
    </span>    <span>.pipe(sass())
    </span>    <span>// Write the resulting CSS in the output folder
    </span>    <span>.pipe(gulp.dest(output));
    </span><span>});</span>
    登录后复制
    登录后复制
    我正在看着你

    >在离开之前,我们仍然可以做些什么:创建手表任务。该任务的目的是注意样式表的更改以再次重新编译它们。在项目的Sass侧工作时非常方便,因此您不必每次保存文件时都可以手工运行SASS任务。
    <span>var sassOptions = {
    </span>  <span>errLogToConsole: true,
    </span>  <span>outputStyle: 'expanded'
    </span><span>};
    </span>
    gulp<span>.task('sass', function () {
    </span>  <span>return gulp
    </span>    <span>.src(input)
    </span>    <span>.pipe(sass(sassOptions).on('error', sass.logError))
    </span>    <span>.pipe(gulp.dest(output));
    </span><span>});</span>
    登录后复制
    登录后复制

    >这是我建议不要在SASS任务中加入SASSDOC的另一个原因:您可能不想每次触摸样式表时都会再生文档。这可能是您在构建或推动上要做的事情,也许是使用预先承诺的挂钩。

    添加最终触摸

    $ <span>npm install gulp-sourcemaps --save-dev</span>
    登录后复制
    登录后复制
    最后但重要的是要考虑的事情:在默认任务中运行sass。

    >作为任务(..)函数的第二个参数传递的数组是依赖关系任务的列表。基本上,它告诉Gulp在运行指定为第三个参数(如果有)之前运行这些任务。

    >。

    >此外,我们可能可以创建一个可以在部署到生产之前直接运行的产品任务(也许是用git钩)。此任务应:

    在压缩模式下编译SASS
    <span>var gulp = require('gulp');
    </span><span>var sass = require('gulp-sass');
    </span><span>var sourcemaps = require('gulp-sourcemaps');
    </span>
    <span>// ... variables
    </span>
    gulp<span>.task('sass', function () {
    </span>  <span>return gulp
    </span>    <span>.src(input)
    </span>    <span>.pipe(sourcemaps.init())
    </span>    <span>.pipe(sass(sassOptions).on('error', sass.logError))
    </span>    <span>.pipe(sourcemaps.write())
    </span>    <span>.pipe(gulp.dest(output));
    </span><span>});</span>
    登录后复制
    登录后复制
    >

    >带有autoprefixer的前缀CSS

    再生sassdoc文档

      避免任何sourcemaps
    • 最终想法
    • 就是伙计们!在短短几分钟和几行JavaScript中,我们设法创建了一个强大的小小的Gulp工作流程。您可以在此处找到完整的文件。你会添加什么?
    • >
    • 经常询问有关GULP和SASS Workflow的问题(常见问题解答)
    >如何为我的项目安装Gulp和Sass?
    gulp<span>.task('sass', function () {
    </span>  <span>return gulp
    </span>    <span>.src(input)
    </span>    <span>.pipe(sourcemaps.init())
    </span>    <span>.pipe(sass(sassOptions).on('error', sass.logError))
    </span>    <span>.pipe(sourcemaps.write('./stylesheets/maps'))
    </span>    <span>.pipe(gulp.dest(output));
    </span><span>});</span>
    登录后复制
    登录后复制

    以安装项目的Gulp和Sass,您需要在计算机上安装Node.js和NPM。一旦拥有这些功能,就可以通过在终端中运行命令NPM安装命令NPM安装-Global Gulp-CLI来全局安装GULP。之后,导航到您的项目目录并运行NPM INIT创建一个package.json文件。然后,通过运行NPM安装-Save-Dev Gulp-Sass。

    >如何使用Gulp?

    来编译SASS文件,以使用Gulp编译SASS文件,需要创建一个Gulp任务。在您的Gulpfile.js中,您可以创建一个名为“ SASS”的任务,该任务将您的SASS文件编译为CSS。这是一个如何执行此操作的简单示例:

    var gulp = require('gulp');
    var sass = require('gulp-sass');


    gulp.task ('sass',function(){
    return gulp.src('./ sass/** /*。scss')
    .pipe(sass()。on('error',sass.logerror))
    .pipe(gulp.dest('./ css'));
    }) ;

    此任务将在您的SASS目录中获取所有.scss文件,使用Gulp-sass将其编译为CSS,然后输出所得的CSS文件您的CSS目录。

    如何观看SASS文件中的更改并自动编译它们?
    >

    GULP提供了一种名为Watch的方法,您可以使用该方法在更改文件时可以自动运行任务。这是您可以修改“ SASS”任务以查看更改的方法:
    gulp.task('sass',function(){ gulp.watch('./ sass/*)*/*。 ['sass']);
    });

    现在,每当您将.scss文件保存在SASS目录中时,“ SASS”任务都会自动运行并将SASS文件编译到CSS中。>如何处理SASS文件中的错误?

    在编译SASS文件时,您可能会遇到语法错误。您可以使用Gulp-Sass提供的ON方法处理这些错误。这是您可以将“ SASS”任务修改为记录错误的方法:

    gulp.task('sass',function(){ return gulp.src('./ sass/**/*。 scss')
    .pipe(sass()。on('error',sass.logerror))
    >如何使用Gulp缩小我的CSS文件?

    缩小CSS文件,您可以使用GULP插件称为Gulp-Clean-CSS。首先,通过运行NPM安装-Save-dev Gulp-Clean-CSS将其安装在项目中。然后,您可以创建一个任务,该任务将缩小您的CSS文件:

    var cleancss = require('gulp-clean-css'); gulp.task('kinify-css','nimify-css',', ()=> { return gulp.src('styles/*。css')

    .pipe(cleancss({compatibility:compatibility:compatibility: 'ie8'})))

    .pipe(gulp.dest('dist''));
    });

    >

    此任务将在您的样式目录中使用所有.css文件Gulp-clean-css,并在您的DIST目录中输出所得的CSS文件。

以上是一个简单的Gulp&#x27; y的工作流程的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1673
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在行动中:现实世界中的示例和项目 JavaScript在行动中:现实世界中的示例和项目 Apr 19, 2025 am 12:13 AM

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

了解JavaScript引擎:实施详细信息 了解JavaScript引擎:实施详细信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python vs. JavaScript:社区,图书馆和资源 Python vs. JavaScript:社区,图书馆和资源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python vs. JavaScript:开发环境和工具 Python vs. JavaScript:开发环境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C/C在JavaScript口译员和编译器中的作用 C/C在JavaScript口译员和编译器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

Python vs. JavaScript:比较用例和应用程序 Python vs. JavaScript:比较用例和应用程序 Apr 21, 2025 am 12:01 AM

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

See all articles