搜索
首页web前端js教程一个简单的Gulp' y的工作流程

一个简单的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
JavaScript的起源:探索其实施语言JavaScript的起源:探索其实施语言Apr 29, 2025 am 12:51 AM

JavaScript起源于1995年,由布兰登·艾克创造,实现语言为C语言。1.C语言为JavaScript提供了高性能和系统级编程能力。2.JavaScript的内存管理和性能优化依赖于C语言。3.C语言的跨平台特性帮助JavaScript在不同操作系统上高效运行。

幕后:什么语言能力JavaScript?幕后:什么语言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在浏览器和Node.js环境中运行,依赖JavaScript引擎解析和执行代码。1)解析阶段生成抽象语法树(AST);2)编译阶段将AST转换为字节码或机器码;3)执行阶段执行编译后的代码。

Python和JavaScript的未来:趋势和预测Python和JavaScript的未来:趋势和预测Apr 27, 2025 am 12:21 AM

Python和JavaScript的未来趋势包括:1.Python将巩固在科学计算和AI领域的地位,2.JavaScript将推动Web技术发展,3.跨平台开发将成为热门,4.性能优化将是重点。两者都将继续在各自领域扩展应用场景,并在性能上有更多突破。

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,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

JavaScript是用C编写的吗?检查证据JavaScript是用C编写的吗?检查证据Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C语言编写的。1)C语言提供了高效性能和底层控制,适合JavaScript引擎的开发。2)以V8引擎为例,其核心用C 编写,结合了C的效率和面向对象特性。3)JavaScript引擎的工作原理包括解析、编译和执行,C语言在这些过程中发挥关键作用。

JavaScript的角色:使网络交互和动态JavaScript的角色:使网络交互和动态Apr 24, 2025 am 12:12 AM

JavaScript是现代网站的核心,因为它增强了网页的交互性和动态性。1)它允许在不刷新页面的情况下改变内容,2)通过DOMAPI操作网页,3)支持复杂的交互效果如动画和拖放,4)优化性能和最佳实践提高用户体验。

C和JavaScript:连接解释C和JavaScript:连接解释Apr 23, 2025 am 12:07 AM

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

从网站到应用程序:JavaScript的不同应用从网站到应用程序:JavaScript的不同应用Apr 22, 2025 am 12:02 AM

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

See all articles

热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

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

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

禅工作室 13.0.1

禅工作室 13.0.1

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