首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gulp开发教程(翻译)

这个特性十分有用(对我来说,这可能是Gulp中最有用的一个功能)。你可以保存LESS文件,接着Gulp会自动把它转换为CSS文件并更新浏览器。...: end 在watcher结束时触发(这意味着,在文件改变的时候,任务或者回调不会执行) error 在出现error时触发 ready 在文件被找到并正被监听时触发 nomatch 在glob没有匹配到任何文件时触发...watcher.add(glob) 将与指定glob相匹配的文件添加到watcher(也接受可选的回调当第二个参数) watcher.remove(filepath) 从watcher中移除个别文件 Reloading...Changes In The Browser 当一个文件被修改或者Gulp任务被执行时可以用Gulp来加载或者更新网页。...当你改变代码的时候,BrowserSync会重新加载页面,或者如果是css文件,会直接添加进css中,页面并不需要再次刷新。这项功能在网站是禁止刷新的时候是很有用的。

86740

给初学者的Gulp教程(译)

它经常用来进行一些前端任务,比如: 生成一个Web服务器 当一个文件保存时,浏览器自动刷新 编译像Sass或者LESS一样的预处理器 优化资源文件,像CSS,JavaScript和图片等 这些并不是Gulp...现在让我们继续向前,以及学习如何使用Gulp配置一个工作流 我们要配置什么 在看完这篇文章后,你将拥有一个工作流,来进行我们文章开始所说的一些任务: 生成一个Web服务器 当一个文件保存时,浏览器自动刷新...watch-compile.gif 让我们来进行下一步,以及让Gulp重新加载浏览器,当我们保存一个.scss文件,通过Browser Sync。...既然我们已经监视了.scss文件,并重新加载,为什么不更进一步,当HTML文件和JavaScript文件保存后,重新加载浏览器呢?...服务器 2.使用Sass编译器 3.当文件改变后,自动重新加载浏览器 让我们进入下一届,讨论优化资源文件的部分。

4.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    拥抱 Vite2.0 系列(二)

    特征 在最基本的层次上,使用Vite进行开发与使用静态文件服务器没有太大区别。但是,Vite对本机ESM导入提供了许多增强功能,以支持通常在基于捆绑程序的设置中常见的各种功能。...具有HMR功能的框架可以利用API提供即时、准确的更新,而无需重新加载页面或删除应用程序状态。Vite为Vue单文件组件提供第一方HMR集成,并快速响应刷新。...Vite改进了Sass和Less的@import解析,因此Vite别名也得到了尊重。此外,在与根文件不同的目录中,导入的Sass/Less文件中的相对url()引用也会自动重基,以确保正确性。...glob匹配是通过fast-glob完成的——请查看它的文档以获取支持的glob模式。...当相关的异步块被加载时,CSS文件通过标签自动加载,并且异步块保证只在CSS加载后才被计算,以避免FOUC。

    3.3K30

    Vite该如何使用?Vite学习笔记,持续记录

    当启用时,在异步 chunk 中导入的 CSS 将内联到异步 chunk 本身,并在其被加载时插入。如果禁用,整个项目中的所有 CSS 将被提取到一个 CSS 文件中。.../dir/bar.js') } 提示 Vite3.0已支持传递数组进行批量导入 匹配到的文件默认是懒加载的,通过动态导入实现,并会在构建时分离为独立的 chunk。...当启用时,在异步 chunk 中导入的 CSS 将内联到异步 chunk 本身,并在其被加载时插入。如果禁用,整个项目中的所有 CSS 将被提取到一个 CSS 文件中。...12.server host,监听的IP地址 port,监听的端口 https,是否启用https cors,是否允许跨域 force,强制依赖预构建 hmr,配置热更新的ws服务器({ protocol....env 类文件会在 Vite 启动一开始时被加载,而改动会在重启服务器后生效。 加载的环境变量也会通过 import.meta.env 以字符串形式暴露给客户端源码。

    4.2K20

    ​我修复了一个 Vite Bug,让我的项目首屏性能提高了 25%

    导致运行代码时,多次发现新的依赖(没有进行预构建),导致又要重新执行预构建,最后还刷新了页面。因此可能问题的根源是:Vite 的依赖扫描没有扫描到所有的依赖。...两者构建的依赖数量本身就相差较大的。每次发现新的依赖,必须重新构建吗?...必须重新构建官方文档提到了, Vite 构建的两个目的:CommonJS 和 UMD 兼容性: 开发阶段中,Vite 的开发服务器将所有代码视为原生 ES 模块。...第三次构建与第二次构建对比, echart/core 的模块文件已经被改变(原来自己所有代码都在一个模块,现在公共代码被抽离),原先浏览器拉取的 echart.core 代码已经是失效的代码,这时候只能刷新页面...,让浏览器重新拉取最新的 echart/coreVite 实际上会根据打包前后的 file hash,来决定是否需要刷新页面,如果所有依赖的构建前后文件 hash 没有被改变,则不会刷新页面,例如第二次构建

    1.4K31

    新型web框架Astro快速构建内容网站

    高性能 在许多 Web框架 中,在开发过程中很容易构建一个看起来很棒的网站,但是在部署后加载速度会非常慢。...使用 Astro 构建几乎不可能缓慢的网站。与使用最受欢迎的 React Web框架 构建相同的网站进行比较,Astro 网站的加载速度快40%,JavaScript减少90% 。...运行Astro # npm npm run dev # pnpm pnpm run dev # yarn yarn run dev 浏览器打开 http://localhost:3000 就可以访问了。...Astro 将实时监听 src 目录文件的更改,因此你在开发过程中进行更改时无需重新启动服务器。...路由 Astro 的路由基于文件,它根据项目的 src/pages 目录中的文件结构来生成你的构建链接。当一个文件被添加到 src/pages 目录中,它将自动基于文件名生成与之对应的路由。

    3.2K40

    webpack配置优化,让你的构建速度飞起

    浏览器拿到最新的模块代码,HMR 又是怎么将老的模块替换成新的模块,在替换的过程中怎样处理模块之间的依赖关系?当模块的热替换过程中,如果替换模块失败,有什么回退机制吗?...但是这样的话就会有一个问题, 因为前后输出的文件名是一样的,都叫 main.js,一旦将来发布新版本,因为文件名没有变化导致浏览器会直接读取缓存,不会加载新资源,项目也就没法更新了。...但是加载速度还不够好,比如:是用户点击按钮时才加载这个资源的,如果资源体积很大,那么用户会感觉到明显卡顿效果。我们想在浏览器空闲时间,加载后续需要使用的资源。...Preload:告诉浏览器立即加载资源。Prefetch:告诉浏览器在空闲时才开始加载资源。它们共同点:都只会加载资源,并不执行。都有缓存。...使用 HotModuleReplacement 让开发时只重新编译打包更新变化了的代码,不变的代码使用缓存,从而使更新速度更快。

    2.4K10

    webpack配置优化,让你的构建速度飞起_2023-02-28

    浏览器拿到最新的模块代码,HMR 又是怎么将老的模块替换成新的模块,在替换的过程中怎样处理模块之间的依赖关系? 当模块的热替换过程中,如果替换模块失败,有什么回退机制吗?...但是这样的话就会有一个问题, 因为前后输出的文件名是一样的,都叫 main.js,一旦将来发布新版本,因为文件名没有变化导致浏览器会直接读取缓存,不会加载新资源,项目也就没法更新了。...但是加载速度还不够好,比如:是用户点击按钮时才加载这个资源的,如果资源体积很大,那么用户会感觉到明显卡顿效果。 我们想在浏览器空闲时间,加载后续需要使用的资源。...Preload:告诉浏览器立即加载资源。 Prefetch:告诉浏览器在空闲时才开始加载资源。 它们共同点: 都只会加载资源,并不执行。 都有缓存。...使用 HotModuleReplacement 让开发时只重新编译打包更新变化了的代码,不变的代码使用缓存,从而使更新速度更快。

    2.2K10

    webpack配置完全指南

    动态配置入口文件 动态打包所有子项目 当构建项目包含多个子项目时,每次增加一个子系统都需要将入口文件写入 webpack 配置文件中,其实我们让webpack 动态获取入口文件,例如: // 使用 glob...浏览器缓存与 hash 值 对于我们开发的每一个应用,浏览器都会对静态资源进行缓存,如果我们更新了静态资源,而没有更新静态资源名称(或路径),浏览器就可能因为缓存的问题获取不到更新的资源。...拆包 当包过大时,如果我们更新一小部分的包内容,那么整个包都需要重新加载,如果我们把这个包拆分,那么我们仅仅需要重新加载发生内容变更的包,而不是所有包,有效的利用了缓存。...注意,当包太多时,浏览器会发起更多的请求,并且当文件过小时,对代码压缩也有影响。...watchOptions watch 监视文件更新,并在文件更新时重新编译: module.export = { // 启用监听模式 watch: true, } 在 webpack-dev-server

    3.1K20

    webpack配置完全指南_2023-03-01

    动态配置入口文件 动态打包所有子项目 当构建项目包含多个子项目时,每次增加一个子系统都需要将入口文件写入 webpack 配置文件中,其实我们让webpack 动态获取入口文件,例如: // 使用 glob...浏览器缓存与 hash 值 对于我们开发的每一个应用,浏览器都会对静态资源进行缓存,如果我们更新了静态资源,而没有更新静态资源名称(或路径),浏览器就可能因为缓存的问题获取不到更新的资源。...拆包 当包过大时,如果我们更新一小部分的包内容,那么整个包都需要重新加载,如果我们把这个包拆分,那么我们仅仅需要重新加载发生内容变更的包,而不是所有包,有效的利用了缓存。...注意,当包太多时,浏览器会发起更多的请求,并且当文件过小时,对代码压缩也有影响。...watchOptions watch 监视文件更新,并在文件更新时重新编译: module.export = { // 启用监听模式 watch: true, } 在 webpack-dev-server

    3.4K10

    Gulp探究折腾之路(I)

    来从你指定的glob里面获取文件,这里列举下面的例子来阐述,方便大家理解: js/app.js 精确匹配文件 js/.js 仅匹配js目录下的所有后缀为.js的文件 js//.js 匹配js目录及其子目录下所有后缀为...js/app.js 从匹配结果中排除js/app.js,这种方法在你想要匹配除了特殊文件之外的所有文件时非常管用 *....它除了模块以外,还需要在浏览器中安装插件,用来配合源码变化。 LiveReload结合了浏览器扩展(包括Chrome extension),在发现文件被修改时会实时更新网页。...一旦监测到变化,就会生成css并保存,然后重新加载网页. BrowserSync 安装 BrowserSync 您可以选择从Node.js的包管理(NPM)库中 安装BrowserSync。...打开一个终端窗口,运行以下命令: npm install -g browser-sync 您告诉包管理器下载BrowserSync文件,并在全局下安装它们,您可以在所有项目(任何目录)中使用。

    1.8K80

    多端多页面项目webpack打包实践与优化

    不同mode的区别与默认配置可以参考https://segmentfault.com/a/1190000013712229 那么接下来我们来我们从零开始一步步完成一个完整项目的配置,每部分配置除了会列出基础配置...server webpack-dev-server 是开发时的必备利器,它可以在本地起一个简单的 web 服务器,当文件发生变化时,能够实时重新加载。...注意:当这里的publicPath和output的publicPath同时设置时,这里的优先级更高 3、配置分离 通常,我们本地开发环境和生产环境会采用不同的配置文件,发布上线时,我们会对资源进行压缩...import() 会返回一个 promise,在代码中所有被import()的模块,都将打成一个单独的包,在浏览器运行到这一行代码时,就会自动请求这个资源,实现动态加载。...id作为chunkName 2) 当bundle中已经以同步方式引入模块后,import()将不会再被webpack单独打包出js文件,可以认为是按需加载无效了 2、抽离公共模块 1)一般项目 为了合理利用浏览器缓存

    2.2K20

    多端多页面项目Webpack打包实践与优化

    不同mode的区别与默认配置可以参考https://segmentfault.com/a/1190000013712229 那么接下来我们来我们从零开始一步步完成一个完整项目的配置,每部分配置除了会列出基础配置...server webpack-dev-server 是开发时的必备利器,它可以在本地起一个简单的 web 服务器,当文件发生变化时,能够实时重新加载。...才能完全启用 HMR 2) publicPath publicPath路径下的打包文件可以在浏览器中访问,可以这么理解,webpack-dev-server打包的内容是放在内存中的,这些打包后的资源对外的的根目录就是...注意:当这里的publicPath和output的publicPath同时设置时,这里的优先级更高 3、配置分离 通常,我们本地开发环境和生产环境会采用不同的配置文件,发布上线时,我们会对资源进行压缩、...import() 会返回一个 promise,在代码中所有被import()的模块,都将打成一个单独的包,在浏览器运行到这一行代码时,就会自动请求这个资源,实现动态加载。

    1.9K30

    前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍

    静态文件(css/js/img)hash版本支持 11 清除目标文件目录 12 eslint支持并实现自动修复部分问题 13 vue接口请求axios支持 14 热更新,自动编译并刷新浏览器 项目目录结构...所以这里对lib文件夹进行了排除。layouts文件夹为获取html路径时需要排除的文件路径。...js有变化,会导致打包后的js版本号进行更新然后重新加载,这个代价有些大,所以我们会考虑把一些公共的js文件提取出一个单独的文件,这样在第一次访问的时候会加载,之后就可以缓存下来,减少服务器请求的压力并提高加载速度...如果不生成manifest文件,这些webpack的编译逻辑信息就会存储在vendors中,当incomejs等页面的功能js变化时,也会导致这个公共js的hash值变化,这样又会导致重新加载100多k...而如果多生成一个manifest.js文件,会发现,当incomejs等页面页面功能js变化时,只有manifest.js的hash值有更新,vendors.js的hash值不变,虽然这样会导致重新请求

    1.1K60

    Fis3 构建迁移 Webpack 之路

    我们需要的entry是:'./src/pages/**/init.js',它能够像一些linux的命令,具备匹配某个规则的所有结果的能力。这里的思路是借助glob,达到动态entry的目的。...new webpack.optimize.UglifyJsPlugin(), ... ], 文件Hash 每次功能发布上线,都需要重新构建一次源代码,生成一个新的文件版本列表。...此处文件Hash的方式就是一种版本管理的方式,发布时替换有变化的版本的文件,达到增量更新的效果。此处Hash策略是:根据文件内容进行hash,取8位。...手淘的rem方案完美解决了这个问题,它的核心思想是页面加载时动态设置body的font-size值和rem和px转换的单位。...这样依赖的文件发生变化后,会自动增量构建并且刷新浏览器 支持HMR: webpack.config.js文件内容变化后,会触发热更新逻辑,此处通过nodemon来守护webpack的构建进程,eg:

    2K20

    使用Webpack5创建Vue2项目及优化

    以上babel的配置是官网提供主要用来解决业务代码js语法转译用的,当要生成类库或者组件库时上面这种配置会污染全局变量,需要使用@babel/plugin-transform-runtime 在根目录下创建...= require('glob'); // 文件匹配模式 // ......) 当按需加载 chunks 时,并行请求的最大数量小于或等于 30 当加载初始化页面时,并发请求的最大数量小于或等于 30 1、默认配置介绍 module.exports = { //......maxAsyncRequests: 30, // 最大的按需(异步)加载次数 maxInitialRequests: 30, // 打包后的入口文件加载时,还能同时加载js文件的数量(包括入口文件...preload 上面我们使用异步加载的方式引入图片的描述,但是如果需要异步加载的文件比较大时,在点击的时候去加载也会影响到我们的体验,这个时候我们就可以考虑使用 prefetch 来进行预拉取 prefetch

    3K10

    webpack4配置入门和进阶

    webpack作为一个模块打包器,主要用于前端工程中的依赖梳理和模块打包,将我们开发的具有高可读性和可维护性的代码文件打包成浏览器可以识别并正常运行的压缩代码,主要包括样式文件处理成css,各种新式的JavaScript...Module:模块,在Webpack里一切皆模块,Webpack会从配置的Entry开始递归找出所有依赖的模块,最常用的是rules配置项,功能是匹配对应的后缀,从而针对代码文件完成格式转换和压缩合并等指定的操作...DevServer:用于配置开发过程中使用的本机服务器配置,属于webpack-dev-server这个插件的配置项。...端口 host: 'localhost', overlay: true, compress: false // 服务器返回浏览器的时候是否启动gzip压缩...// 服务器返回浏览器的时候是否启动gzip压缩 }, watchOptions: { ignored: /node_modules/, //忽略不用监听变更的目录 aggregateTimeout

    3.5K120
    领券