零配置打包工具 Parcel 的详细使用指南
前言
在前端开发中,选择一个高效且易用的打包工具至关重要。Parcel 作为一款零配置的 Web 应用打包工具,凭借其卓越的性能和简单的使用体验,赢得了众多开发者的青睐。它不仅能够自动处理依赖关系和代码打包,还支持热模块替换和多种静态资源文件类型,使开发过程更加顺畅。本教程将详细介绍如何使用 Parcel,从安装到项目打包,让你快速上手并充分利用这款强大的工具。
为什么选择 Parcel?
使用 Parcel 的原因有很多,以下是其中一些亮点:
- 零配置:不需要编写繁琐的配置文件。
- 快速打包:Parcel 的打包速度非常快,尤其适合开发环境。
- 自动处理依赖:自动解析并打包各种依赖,包括 JavaScript、CSS、图片等。
- 热模块替换:在开发过程中,自动刷新浏览器。
使用步骤
安装
开始使用 Parcel 非常简单。首先,你需要 Node.js 和 npm(Node 包管理器)已经安装在你的计算机上。如果没有,可以从 Node.js 官方网站下载安装。
然后,通过 npm 全局安装 Parcel:
npm install -g parcel-bundler
创建项目
假设我们要创建一个简单的项目,并使用 Parcel 来打包。首先,创建一个新的文件夹并进入该文件夹:
mkdir my-parcel-project
cd my-parcel-project
初始化一个新的 npm 项目:
npm init -y
这将在你的项目文件夹中生成一个 package.json 文件。
编写代码
接下来,我们创建一个基本的 HTML 文件和一个 JavaScript 文件,看看 Parcel 是如何工作的。
在项目根目录下创建一个 index.html 文件:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Parcel Example</title>
</head>
<body><h1>Hello Parcel!</h1><script src="./index.js"></script>
</body>
</html>
然后创建一个 index.js 文件:
console.log('Hello from Parcel!');
使用 Parcel 打包
现在我们已经有了基本的文件结构,接下来使用 Parcel 来打包我们的项目。
在项目根目录下运行:
parcel index.html
Parcel 将启动一个开发服务器,并且会在默认的 http://localhost:1234 端口上运行。打开浏览器访问这个地址,你应该能看到页面内容,并且在控制台中看到 “Hello from Parcel!” 的打印信息。
热模块替换
Parcel 默认支持热模块替换(HMR)。在开发过程中,如果你对代码进行了修改,浏览器会自动刷新,而不会整个页面重新加载。
试着修改 index.js 文件,比如改成:
console.log('Hello from the updated Parcel!');
保存文件后,你会发现浏览器自动刷新,并且控制台中会显示更新后的信息。
打包上线
当你准备将项目部署到生产环境时,可以使用 Parcel 的打包命令来生成优化后的文件。
运行以下命令:
parcel build index.html
Parcel 将会生成一个 dist 文件夹,其中包含了优化和压缩后的文件。你可以将这个文件夹中的内容部署到你的服务器上。
常见问题与解决方法
虽然 Parcel 使用起来非常简单,但在使用过程中你可能会遇到一些问题。下面是一些常见问题及其解决方法:
1. 环境变量
在开发过程中,有时需要使用环境变量。Parcel 支持 .env 文件来管理环境变量。你可以在项目根目录下创建一个 .env 文件:
API_KEY=your_api_key_here
然后在 JavaScript 代码中通过 process.env 访问这些变量:
console.log(process.env.API_KEY);
2. CSS 预处理器
Parcel 支持多种 CSS 预处理器,例如 Sass、Less 等。你只需要安装相应的 npm 包,然后在你的项目中使用即可。
安装 Sass:
npm install sass
使用 Sass:
创建一个 styles.scss 文件:
$primary-color: #3498db;body {background-color: $primary-color;
}
在 index.html 文件中引用:
<link rel="stylesheet" href="./styles.scss">
Parcel 会自动处理这些文件,并将它们转换为标准的 CSS。
3. 使用 Babel 转译 JavaScript
默认情况下,Parcel 会自动使用 Babel 转译现代 JavaScript 代码,以确保兼容性。如果你需要自定义 Babel 配置,可以在项目根目录下创建一个 .babelrc 文件:
{"presets": ["@babel/preset-env"]
}
安装必要的 Babel 插件:
npm install @babel/core @babel/preset-env
4. 图片和其他资产
Parcel 支持多种静态资源文件类型,包括图片、字体等。只需像引用 JavaScript 或 CSS 一样在 HTML 文件中引用这些资源,Parcel 会自动处理。
例如:
在 HTML 文件中引用图片:
<img src="./images/logo.png" alt="Logo">
在 CSS 文件中引用字体:
@font-face {font-family: 'MyFont';src: url('./fonts/my-font.woff2') format('woff2');
}
进阶功能
1. 使用插件
Parcel 有一个丰富的插件生态系统,可以帮助你扩展其功能。比如,你可以使用 parcel-plugin- 前缀的一些插件来支持特定的功能。
安装插件:
npm install parcel-plugin-static-files-copy
在 package.json 中配置插件:
{"name": "my-parcel-project","version": "1.0.0","main": "index.js","license": "MIT","devDependencies": {"parcel-bundler": "^1.12.4","parcel-plugin-static-files-copy": "^2.3.1"},"staticFiles": {"staticPath": "static"}
}
2. 多入口文件
如果你的项目有多个入口文件,比如一个主应用和一个管理后台,你可以这样配置:
parcel index.html admin.html
Parcel 会同时打包这两个入口文件及其依赖。
3. TypeScript 支持
Parcel 也支持 TypeScript,只需安装相关依赖即可:
npm install typescript
然后创建一个 TypeScript 文件,比如 index.ts,Parcel 会自动处理这些文件。
总结
通过本教程的学习,你应该已经掌握了 Parcel 的基础使用方法,包括安装、项目配置、编写代码以及打包上线等关键步骤。Parcel 的零配置特性和自动化处理能力,极大地提升了开发效率,让你能够专注于核心业务逻辑的实现。如果你希望深入了解更多高级功能和配置选项,建议查阅 Parcel 官方文档。无论是小型项目还是复杂的企业级应用,Parcel 都能为你的开发流程提供有力支持。
相关文章:
零配置打包工具 Parcel 的详细使用指南
前言 在前端开发中,选择一个高效且易用的打包工具至关重要。Parcel 作为一款零配置的 Web 应用打包工具,凭借其卓越的性能和简单的使用体验,赢得了众多开发者的青睐。它不仅能够自动处理依赖关系和代码打包,还支持热模块替换和多…...
批量查找文件关键字-工具
string find...
freeswitch(开启支持MCU视频会议,使用mod_av模块)
亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: 有些场景想使用视频会议MCU融合画面进行开会使用方法: 第一步:下载插件 yum install -y epel-release yum install...
Quant connect的优势和不足,学习曲线难
Quant connect的优势和不足 Quant connect作为一个成熟的算法交易平台,具有许多优势,包括: 强大的回测功能:Quant connect提供了丰富的数据源和回测功能,可以对各种交易策略进行全面的回测和分析。 容易上手…...
对rust的全局变量使用drop方法
文章目录 rust处理全局变量的策略方法1:在main中自动Drop全局变量 参考 rust处理全局变量的策略 Rust 的静态变量不会在程序退出时自动调用 Drop,因为它们的生命周期与进程绑定。 use std::sync::OnceLock;struct GlobalData {content: String, }impl …...
使用FastGPT制做一个AI网站日志分析器
越来越的多网站面临每天上千次的扫描和各类攻击,及时发现攻击IP,并有效的屏蔽不良访问成为网站安全的重要保障,这里我们使用AI来完成对网站日志的日常分析。 我们来使用FastGPT来制做一个AI网站日志析器,下面就开始: …...
无限次使用 cursor pro
github地址 cursor-vip 使用方式 在 MacOS/Linux 中,请打开终端; 在 Windows 中,请打开 Git Bash。 然后执行以下命令来安装: 部分电脑可能会误报毒,需要关闭杀毒软件/电脑管家/安全防护再进行 方式1:通过…...
vuex 作用及五大组成部分
Vuex 是 Vue.js 的官方状态管理库,旨在帮助开发者构建大型应用时更好地管理和共享全局状态。它提供了一种集中式存储和管理应用所有组件的状态的方式,并且遵循单一状态树的原则。通过 Vuex,可以更容易地实现状态的可预测性和调试。 一、Vuex…...
Centos7上Jenkins+Docker+Git+SpringBoot自动化部署
文章目录 1.宿主机安装maven2.安装jenkins3.配置Jenkins4.Jenkins脚本自动安装JDK(可选) 1.宿主机安装maven wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz mv apache-maven-3.9.9-bin.tar.gz /usr/local…...
MATLAB图卷积神经网络GCN处理分子数据集节点分类研究
全文链接:https://tecdat.cn/?p38570 本文主要探讨了如何利用图卷积网络(GCN)对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节,通过对分子数据集的操作实践,展示了完整的节点分类流程&#…...
高级Python游戏开发:创建一款多人对战坦克大战
在本教程中,我们将用Python的Pygame库开发一款高级的坦克大战游戏。这款游戏支持多人对战、碰撞检测、子弹射击以及地图障碍生成,适合作为学习Python高级游戏开发的练习项目。 一、游戏功能概述 多人对战模式:玩家可以操作坦克,在同一屏幕上互相攻击。子弹射击:坦克可以发…...
网站访问的基础-HTTP超文本传输协议
BS架构 浏览器Browser⬅➡服务器Server 浏览器和服务器之间通过 IP 地址进行通信,实现数据的请求和传输。 例如,当用户在浏览器中访问一个网站时,浏览器会根据用户输入的网址(通过 DNS 解析得到服务器 IP 地址)向服…...
使用Hydra库简化配置管理
使用Hydra库简化配置管理 简介 在现代软件开发中,配置管理是至关重要的。应用程序的灵活性和可维护性很大程度上取决于其如何处理配置。Hydra是一个由Facebook AI Research (FAIR) 开发的Python库,它旨在简化复杂应用的配置过程。Hydra使得开发者可以轻…...
Java对集合的操作方法
1. 数组转集合 //数组转集合 String[] split quickRechargeAmount.split(","); List<String> stringList Stream.of(split).collect(Collectors.toList()); 2. 对List集合数据内容进行分组 //对List集合数据内容进行分组 Map<String, List<LiveAppGi…...
WordPress酱茄主题 开源版 博客资讯自媒体网站模板
一款免费开源的WordPress主题,主题专为WordPress博客、资讯、自媒体网站而设计 运行环境 支持WordPress版本:5.6 兼容Chrome、Firefox、Safari等主流浏览器 支持设备:响应式布局,不同设备不同展示效果 服务器环境建议&#x…...
【SickOs1.1靶场渗透】
文章目录 一、基础信息 二、信息收集 三、反弹shell 四、提权 一、基础信息 Kali IP:192.168.20.146 靶机IP:192.168.20.150 二、信息收集 端口扫描 nmap -sS -sV -p- -A 192.168.20.150 开放了22、3128端口,8080端口显示关闭 22端…...
Javaweb web后端maven介绍作用安装
自动导入到这个项目 src是源代码 main主程序,核心代码 java是Java源代码 resources是项目配置文件 test测试相关的 maven概述 介绍 依赖在本地仓库查找,如果本地仓库有,用本地仓库的依赖,本地没有,连接中央仓库&…...
Input Action (输入动作) 在虚幻引擎中常用的值类型
1. Digital (bool) 含义: Digital 类型代表一个离散的、二元的输入状态,它只有两种可能的值:true(按下,激活)或 false(未按下,未激活)。 用途: 最常用于表示按键或按钮的按下状态。 适合于开关类型的操作,比如: 跳跃(按键按下时跳跃,松开时不跳跃) 奔跑/行走切换 …...
LabVIEW汽车综合参数测量
系统基于LabVIEW虚拟仪器技术,专为汽车带轮生产中的质量控制而设计,自动化测量和检测带轮的关键参数。系统采用PCIe-6320数据采集卡与精密传感器结合,能够对带轮的直径、厚度等多个参数进行高精度测量,并通过比较测量法判定产品合…...
快速且靠谱的简单安装 PostgreSQL 15 yum 安装postgis3.3
快速且靠谱的简单安装 PostgreSQL 15 yum 安装postgis3.3 1、确保已经安装了PostgreSQL数据库。2、添加PostGIS的EPEL仓库3、使用YUM安装PostGIS4、以下为其他安装方式,一个个去找源码的编译安装,过程较为繁琐(不熟路的不推荐) 要…...
MySQL八股文
MySQL 自己学习过程中的MySQL八股笔记。 主要来源于 小林coding 牛客MySQL面试八股文背诵版 以及b站和其他的网上资料。 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL&…...
Python高性能web框架-FastApi教程:(1)创建一个简单的FastApi
(1)创建一个简单的FastApi 1. 导入必要的库 from fastapi import FastAPI import uvicornFastAPI 是一个用于构建现代、快速(高性能)的Web API的Python框架。uvicorn 是一个ASGI服务器,用于运行异步的Python Web应用…...
多模态机器学习综述论文|Multimodal Machine Learning: A Survey and Taxonomy
1. 引言 多模态机器学习是一个跨学科领域,它涉及到从多种感官模态(如视觉、听觉、触觉等)中提取信息,并构建能够处理和关联这些信息的模型。这种学习方式对于人工智能理解复杂世界至关重要。 名词解释: 模态Modality…...
CentOS8:英伟达显卡驱动与CUDA安装
挺偶然的,同事在CentOS8版本的GPU服务器上安装英伟达的显卡驱动和CUDA遇到了问题,于是协助进行了安装,顺便记录下此次安装过程与心得。 目录 显卡驱动安装 步骤简述 详细步骤 1、官网下载需要的驱动 2、驱动软件包上传并加权 3、安装…...
【IDEA】启动报错
今天启动IDEA报错 报错信息: Cannot connect to already running IDE instance. Exception: Process 5,444 is still running 打开任务管理器,关掉进程ID5444的任务...
Opencv之图像梯度处理和绘制图像轮廓
一、梯度处理的sobel算子函数 处理示意 Sobel 算子是一种常用的图像边缘检测方法,结合了一阶导数和高斯平滑,用于检测图像的梯度信息。 1、功能 Sobel 算子用于计算图像在 x 和 y 方向的梯度,主要功能包括: 强调图像中灰度值的…...
5.2章节python字符串的格式化三种方式
在Python中,格式化字符串是编程中常见的任务,它用于将变量或表达式的值嵌入到字符串中。以下是三种常见的格式化字符串的方式: 1.百分号(%)格式化: 这是Python早期版本中常用的字符串格式化方法。通过在字…...
.NET Core 各版本特点、差异及适用场景详解
随着 .NET Core 的不断发展,微软推出了一系列版本来满足不同场景下的开发需求。这些版本随着时间的推移逐渐演变为统一的 .NET 平台(从 .NET 5 开始)。本文将详细说明每个版本的特点、差异以及适用场景,帮助开发者更好地选择和使用…...
2024.12.14 TCP/IP 网络模型有哪几层?
2024.12.14 TCP/IP 网络模型有哪几层? 2024.12.14 今天周六 看到大伙都在考六级,我来复盘小林coding的计算机网络的知识点: TCP/IP 网络模型有哪几层? 问大家,为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信,有…...
基于SpringBoot的嗨玩旅游网站:一站式旅游信息服务平台的设计与实现
摘要 在旅游需求日益增长的今天,一个全面、便捷的旅游信息服务平台显得尤为重要。嗨玩旅游网站正是为了满足这一需求而设计的在线平台,它提供了包括景点信息、旅游线路、商品信息、社区信息和活动推广等在内的丰富旅游目的地信息,旨在帮助用…...
HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构
HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构 效果图DRAWTEXTREL示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont DRAWTEXTABS示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont 效果图 …...
VMware ESXi上创建Ubuntu虚拟机并实现远程SSH访问全攻略
文章目录 前言1. 在VMware ESXI中创建Ubuntu虚拟机2. Ubuntu开启SSH远程服务3. 安装Cpolar工具4. 使用SSH客户端远程访问Ubuntu5. 固定TCP公网地址 前言 本文主要介绍如何在VMware ESXi上创建一台Ubuntu 22.04虚拟机,并通过Cpolar内网穿透工具配置公网地址…...
进制的转换
前言 进制是一种进位计数制,是人为定义的带进位的计数方法。不同的进制使用不同数量的符号,以及不同的规则来组合这些符号以表示不同的数值。 一、进制类型 二进制:由一串0和1组成的数字,逢二进一 八进制:0 1 2 3 4 5 6 7,…...
迁移学习中模型训练加速(以mllm模型为例),提速15%以上
根据模型训练过程的显存占用实测的分析,一个1g参数的模型(存储占用4g)训练大约需要20g的显存,其中梯度值占用的显存约一半。博主本意是想实现在迁移学习(冻结部分参数)中模型显存占用的降低,结果不太满意,只能实现训练速度提升,但无法实现显存占用优化。预计是在现有的…...
CSS系列(6)-- 排版与文本详解
前端技术探索系列:CSS 排版与文本详解 📝 致读者:探索优雅的文字艺术 👋 前端开发者们, 今天我们将深入探讨 CSS 排版与文本处理,学习如何创建既美观又易读的文本内容。 文本基础属性 🚀 字…...
嵌入式现状、机遇、挑战与展望
在当今数字化浪潮中,嵌入式系统宛如一颗璀璨的明珠,熠熠生辉,深刻地渗透到了我们生活的方方面面,成为推动现代科技进步不可或缺的关键力量。从智能家居的便捷控制,到工业生产的精准运作,再到汽车的智能驾驶…...
关于Postgresql旧版本安装
抛出问题 局点项目现场,要求对如下三类资产做安全加固,需要在公司侧搭建测试验证环境,故有此篇。 bclinux 8.2 tomcat-8.5.59 postgrel -11 随着PG迭代,老旧版本仅提供有限维护。如果想安装老版本可能就要费劲儿一些。现在&…...
【AI日记】24.12.14 kaggle 比赛 2-4 EDA
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加:kaggle 比赛 Regression with an Insurance Dataset内容:构建自己的EDA(探索性数据分析)框架时间:5 小时感想:大规模数据集&a…...
《深入浅出HTTPS》读书笔记(18):公开密钥算法RSA(续)
【RSA算法安全性】 幂运算的逆过程就是求对数问题,而模运算可以认为是离散问题,组合起来RSA算法就是离散对数模型,只要密钥长度足够长,离散对数很难破解。 破解私钥有两个方法: ◎公钥持有人有e和n,而要计…...
LabVIEW面向对象编程有什么特点?
LabVIEW面向对象编程(OOP)的特点主要体现在它如何结合传统面向对象编程(OOP)的理念与LabVIEW的图形化编程模式,提供灵活的抽象和模块化的功能。以下是LabVIEW面向对象编程的几个主要特点: 1. 类&#x…...
【Hive数据仓库】Hive部署、Hive数据库操作(增删改查)、表操作(内部表、外部表、分区表、桶表)
目录 一、本地模式 1、安装MySQL 2、登录MySQL 3、修改密码 4、安装Hive 5、配置Hive系统环境变量 6、初始化Derby数据库 7、连接Hive用于测试 8、测试Hive 9、修改Hive配置文件 10、上传MySQL驱动包 11、初始化MySQL 12、连接Hive用于启动服务 二、远程模式 1、…...
bugku-simple MQTT-wp解析
1.下载题目打开题目,是一个流量包,题目说是MQTT,然后打开流量之后的流量都是MQTT,我们来搜一下MQTT是什么流量 MQTT流量: 是一种基于发布订阅模式的轻量级的通讯协议,并且该协议构建于TCP/IP协议之上&…...
【第四节】Git 分支管理
目录 前言 一、Git 分支简介 二、 分支的基本操作 2.1 创建分支 2.2 切换分支 2.3 列出分支 三、 分支的合并与删除 3.1 合并分支 3.2 删除分支 四、处理合并冲突 五、 总结 前言 Git 的分支管理是其核心功能之一,允许开发者在不影响主线开发的情况下进行…...
IDEA 修改格式化仅格式化本次改动代码
最近总是发现格式化的时候会格式化文件所有代码,提交Git 后再看提交日志,就很不清晰。修改方式如下 中文: 格式化代码快捷键[中文配置]: 英文: 格式化代码快捷键[英文配置]:...
UOB大华银行|校招网申综合能力SHL测评题库英语版本真题分析
大华银行有限公司(大华银行)是亚洲银行业的翘楚,大华银行总部位于新加坡,并在中国、印度尼西亚、马来西亚、泰国及越南设立了全资法人银行,在全球拥有约500 间分行及办事处,分布在亚太、欧洲与北美的19 个国…...
Redis应用—2.在列表数据里的应用
大纲 1.基于数据库 缓存双写的分享贴功能 2.查询分享贴列表缓存时的延迟构建 3.分页列表惰性缓存方案如何节约内存 4.用户分享贴列表数据按页缓存实现精准过期控制 5.用户分享贴列表的分页缓存的异步更新 6.数据库与缓存的分页数据一致性方案 7.热门用户分享贴列表的分…...
【Linux基础】基本开发工具的使用
目录 一、编译器——gcc/g的使用 gcc/g的安装 gcc的安装: g的安装: gcc/g的基本使用 gcc的使用 g的使用 动态链接与静态链接 程序的翻译过程 1. 一个C/C程序的构建过程,程序从源代码到可执行文件必须经历四个阶段 2. 理解选项的含…...
C++ 中面向对象编程如何实现动态绑定?
在 C 中,面向对象编程的一个重要特性就是动态绑定。动态绑定允许在程序运行时根据对象的实际类型来决定调用哪个函数,这为程序的灵活性和可扩展性提供了强大的支持。本文将详细介绍 C 中面向对象编程如何实现动态绑定。 一、静态绑定与动态绑定的概念 静…...
电源芯片的SYNC引脚
-----本文简介----- 主要内容包括: ① 电源芯片的SYNC引脚 ----- 正文 ----- 先赞↓后看,养成习惯! 1. SYNC引脚是什么? 电源芯片里面的SYNC引脚是 Synchronization clock in,意思是同步时钟输入。 2. SYNC引脚的作用…...
安卓报错Switch Maven repository ‘maven‘....解决办法
例如:Switch Maven repository ‘maven(http://developer.huawei.com/repo/)’ to redirect to a secure protocol 在库链接上方添加配置代码:allowInsecureProtocol true...