文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一个可代替 Webpack 的构建工具:Snowpack

2024-12-03 03:29

关注

Webpack是过去几年中最受欢迎的JavaScript构建打包工具之一,这正是得益于它灵活的构建配置以及丰富的官方支持的第三方插件。

Webpack 的主要功能是将你所有的 JavaScript 文件,连带所有从 NPM 导入的模块、图片、CSS 和其他网络资源,全部打包到一个可以被浏览器执行的文件中。

Webpack 也是一个复杂的打包工具,学习曲线也比较陡峭,因为它的灵活性意味着它有非常多的功能来应对各种不同的使用场景。更进一步讲,哪怕只是对一个文件进行了很小的改动,Webpack 会将你的整个 JavaScript 应用重新打包和构建。如果对 Webpack 的工作原理理解不到位,构建一个应用时可能要等半小时以上。

Webpack 是 2014 年发布的。在那个时候,浏览器基本不支持 ECMAScript Module (ESM) 的 import 和 export 语法,所以在浏览器中运行 JavaScript 的方式只能是将项目中所有的模块全部打包进一个文件。

这其中还包括其他的流程,比如使用 Babel 将 JavaScript 从较新版本转换为稍旧版本,以便浏览器可以运行该应用。使用 Webpack 最主要的目的是创造最好的开发体验,让 JavaScript 开发者可以使用最新的功能(ES6+)。

如今 ESM 语法已经被所有主流浏览器支持,所以将你所有的 JavaScript 文件打包在一起已经不是在浏览器中运行应用的必要条件了。

使用 Snowpack,无需进行打包配置

Snowpack 是一个 JavaScript 构建工具,它利用了浏览器对 ESM 的支持,让我们可以构建单个文件并将其发送到浏览器中。每一个被构建的文件都会被缓存,在我们每修改一个文件时,只有这一个文件会被 Snowpack 重新构建。

Snowpack 的开发服务器也做了优化,它只会在浏览器请求后构建该文件。这使得 Snowpack 可以即时启动(小于 50 毫秒)并且扩展到大型项目时也不会增加启动速度。我自己做尝试时启动服务器只用了 35 毫秒。

Snowpack 的构建过程

Snowpack 默认会将你的未打包应用部署到生产环境,但是你也要进行一些构建相关的优化,比如最小化、代码分割、tree-shaking、懒加载等等。

Snowpack 同时支持通过插件连接 Webpack 来打包生产版本的应用。这样,由于 Snowpack 已经转译了你的代码,你的打包工具(Webpack)只需要将常规的 HTML、CSS 和 JavaScript 文件打包。

这也是为什么你在打包过程中不需要复杂的 Webpack 配置文件。

最后,你也可以设置 package.json 中的 browserslist 属性,来设定支持的浏览器版本:

  1.  
  2. "browserslist"">0.75%, not ie 11, not UCAndroid >0, not OperaMini all"

在你执行 snowpack build 指令来构建生产环境的项目时,该属性会自动被应用。Snowpack 不会在构建开发版本时执行任何转译,所以这不是一个问题,因为大部分时间你都会在最新的浏览器版本下开发。

上手 Snowpack

要开始使用 Snowpack,你可以立即使用 Create Snowpack App (CSA) 和 NPX 来创建 Snowpack 应用。例如,你可以用如下指令来用 CSA 新建一个初始化 React 应用:

  1. npx create-snowpack-app react-snowpack --template @snowpack/app-template-react 

一个新的 react-snowpack 文件夹会被创建,并且附带最基础的依赖:

  1. "scripts": { 
  2.   "start""snowpack dev"
  3.   "build""snowpack build"
  4.   "test""web-test-runner \"src*.test.jsx\""
  5.   "format""prettier --write \"src*.{js,jsx}\""
  6.   "lint""prettier --check \"src*.{js,jsx}\"" 
  7. }, 
  8. "dependencies": { 
  9.   "react""^17.0.0"
  10.   "react-dom""^17.0.0" 
  11. }, 
  12. "devDependencies": { 
  13.   "@snowpack/plugin-dotenv""^2.0.5"
  14.   "@snowpack/plugin-react-refresh""^2.4.0"
  15.   "@snowpack/web-test-runner-plugin""^0.2.0"
  16.   "@testing-library/react""^11.0.0"
  17.   "@web/test-runner""^0.12.0"
  18.   "chai""^4.2.0"
  19.   "prettier""^2.0.5"
  20.   "snowpack""^3.0.1" 

你立即就可以使用 npm start 指令运行这个应用。本地的调试服务器会在 8080 端口运行。CSA 的 React 模板和 Create React App 的默认模板非常相似:

Snowpack 支持主流库的 许多官方模板,如 React、Vue 和 Svelte。你只需要在指令中加入 --template 选项。

结语

你使用一个打包工具时应该是因为你想要使用它,而不是因为你需要使用它 —— Snowpack 官方文档

Webpack 和 Snowpack 的发布相隔了数年,尽管 Webpack 一直是打包 JavaScript 模块时人气最高的选择,但浏览器对 ESM 模块的支持开创了一种新的开发 Web 应用的方式。

伴随着不打包开发以及开发中快速构建应用的能力,Snowpack 将成为一个激动人心的 Webpack 替代品,它让我们可以更轻松地开发 JavaScript 应用。与此同时,它还能让你利用 Webpack 打包生产版本,对你的应用实现构建优化。

观看Snowpack 的官方文档,可了解更多。

原文:https://blog.bitsrc.io/snowpack-an-alternative-build-tool-to-webpack-9e8da197071d

 

来源:新钛云服内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯