”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用Gulp.js自动化CSS任务

如何使用Gulp.js自动化CSS任务

发布于2025-03-24
浏览:581

[2

本文探讨了Gulp.js如何简化重复的CSS开发任务,从而提高您的工作流程效率。虽然文本编辑器足以用于网络开发,但重复的任务对于现代网站至关重要,最佳性能往往令人沮丧。 其中包括:跨各种服务器的转换,文件串联,生产代码缩小和部署。 这些任务随着每一个更改而重复,可能会变得越来越繁重。 How to Use Gulp.js to Automate Your CSS Tasks 幸运的是,Gulp.js自动化了这些过程。 This article demonstrates its application in automating various CSS tasks: image optimization, Sass compilation, asset handling and inlining, automatic vendor prefixing, removal of unused CSS selectors, CSS minification, file size reporting, source map generation for browser devtools, and live browser reloading upon source file changes.

使用Gulp.js:

的关键优势

自动化:

自动重复任务,例如图像优化,SASS汇编和CSS Minification。 可扩展性:利用许多插件(例如,

)用于增强功能。
    实时重新加载:
  • 与browsersync集成,以跨多个浏览器和设备进行实时更新。 串行或并行处理任务以进行优化的构建时间。
  • 为什么选择Gulp?
  • 许多任务跑步者都存在(Grunt,WebPack,Parcel,NPM脚本),但是Gulp由于其稳定性,速度,广泛的插件支持和基于JavaScript的配置而脱颖而出。这种基于代码的方法提供了优势,可以进行有条件的输出修改,例如,在最终部署过程中删除Sourcemaps。
  • 入门: 本教程使用Gulp 4。确保您安装了git和node.js。克隆GITHUB的示例项目: git克隆https://github.com/craigbuckler/gulp4-css CD GULP4-CSS NPM I Gulp -Cli -G npm i Gulp
  • 导航到(或浏览器中显示的外部URL)。
  • 另外,创建一个新项目:
  • 安装node.js。
  • 全球安装Gulp:
创建一个项目文件夹(例如,

my-gulp-project )。 初始化npm:

npm init

创建源文件(图像,scss)的subfolders create

为编译文件创建创建一个

[2

安装必要的模块:

git clone https://github.com/craigbuckler/gulp4-css
cd gulp4-css
npm i gulp-cli -g
npm i
gulp
[2 const gulp = require('gulp'); const imagemin = require('gulp-iagemin'); const sass = require('gulp-sass')(require('sass')); //注意:使用Dart-Sass const postcss = require('Gulp-Postcss'); const autoprefixer = require('autoprefixer'); const cssnano = require('cssnano'); //图像任务 函数图像(){ 返回Gulp.src('SRC/Images/*') .pipe(imagemin()) .pipe(gulp.dest('构建/images')); } // CSS任务 功能CSS(){ 返回Gulp.src('SRC/SCSS/MAIN.SCSS') .pipe(sass()。on('错误',sass.logerror)) 。 .pipe(gulp.dest('build/css')); } exports.Images =图像; exports.css = css; exports.default = gulp.parallel(Images,css); //在并行

中运行任务 此示例演示了基本的图像优化和使用缩略和自动固定的SASS汇编。 一个更全面的将包含诸如Sourcemaps,BrowserSync和更复杂的Postcss插件之类的功能。 有关完整的示例,请参阅原始文本。

记住要调整文件路径以匹配您的项目结构。 在您的终端中运行

以及原始文章中提供了进一步的解释。
最新教程 更多>
  • 为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    Class 'ZipArchive' Not Found Error While Installing Archive_Zip on Linux ServerSymptom:When attempting to run a script that utilizes the ZipAr...
    编程 发布于2025-03-26
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-03-26
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-03-26
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-03-26
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-03-26
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-03-26
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-03-26
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-03-26
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-03-26
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 中,如果您使用一个大文件,并且需要从最后一行读取其内容,则在第一行到第一行,Python的内置功能可能不合适。这是解决此任务的有效解决方案:反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] ...
    编程 发布于2025-03-26
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-03-26
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-03-26
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-03-26
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,可以更快地搜索这些前缀。了解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-03-26
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-03-26

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3