开箱即用的Web应用打包工具-Parcel

2023-04-16 0 913

您好,我是bp技术知识库,欢迎关注。


在10年前,那时前端和后端还没有分离,前端写完了界面后统统都要将页面文件交给后端,然后由后端部署在Tomcat这一类的服务上,那个时代的前端受到了很大程度的轻视,甚至被戏称为-切图仔

但后来发生了一件大事,那就是Chrome浏览器出现后,Google团队开源了V8引擎,Ryan Dahl这位大佬基于V8引擎开发了一款动荡整个前端行业的JavaScript运行环境-Node.js。由于它的出现,前端项目走向了工程化、前后端分离的大趋势,同时由于Node.js的原因,现在使用JavaScript不仅仅可以开发Web端,还可以开发手机端、桌面端、服务器端等等。

目前JavaScript有3款比较有名的打包框架,分别是大名鼎鼎的Webpack、高级前端常用的Rollup、以及号称0配置的Parcel。

它们各有各的优势,不过探究它们的区别并不是本篇文章的重点,经过我查阅了很多资料,这些资料一致认为,Webpack比较适合打包工程化项目,Rollup比较适合打包库,而Parcel的优势在于它的0配置打包。

例如之前我有一篇文件讲到:强大的油猴Tampermonkey脚本开发环境搭建,那个时候我还没有接触到Parcel,其实使用Webpack打包脚本不是不可以,只是Webpack需要经过一系列比较麻烦的配置,而像这一类脚本项目,使用开箱即用的Parcel打包就会更加的方便与快捷。

1. 使用Parcel

学习过Webpack的同学应该都清楚,Webpack有一个配置文件,如果在不进行任何配置的情况下,它默认只能打包.js.json类型的文件,其它文件都无法直接进行打包,需要手动配置一个一个的loader。

而Parcel就不同,它几乎默认支持打包所有前端会用到的文件格式,什么csssasslessTypeScriptimg等等,完全不需要你手动去写配置文件,几乎开发中所有需要用到的loader官方都已经在配置文件中帮你写好了,你要做的仅仅是需要下载一下编译环境,比如sass你就需要使用npm install -D sass下载sass编译环境,而less甚至都不需要安装,当Parcel检测到less文件时会自动进行安装编译环境!就是这么神奇!

1.1 简单打包

如果我们仅仅是为了简单打包一个js脚本文件,那么全局安装parcel-bundler就可以了。

npm install -g parcel-bundler

# 或者yarn
yarn global add parcel-bundler

然后在正在搭建的项目中生一个package.json文件(如果不需要使用npm包,不生成也可以进行打包)。

npm init -y

1.1.1 单入口打包

一般来讲,现代web框架生成的都是单页面应用,所以我们只需要一个index.html文件当做入口文件,然后在里面引入一个index.js文件。

例如:

index.html:

<html>
  <body>
    <script src="./index.js"></script>
  </body>
</html>

index.js:

console.log('hello world')

Parcel内置了一个当你改动文件时能够自动重新构建应用的开发服务器,在控制台输入下面的命令就可以打开服务器:

parcel index.html

该服务默认启动在1234端口上面,所以你访问http://localhost:1234/就可以访问到你的web应用,同时你也可以使用-p 8080来手动指定你想要运行的端口号。

parcel index.html -p 8080

在某些情况下你想要打包一个js脚本,比如开发油猴脚本,那么你根本不需要启动一个服务器,只需要监听js文件的改变,那么在参数中加上watch当文件改动时它仍然会自动重新构建并支持热替换,但是不会启动web服务。

parcel watch index.html

上面这些命令运行后都会生成一个dist文件夹,这里就是放置开发环境下打包后的文件。

1.1.2 多入口打包

假设你有多个入口文件,比如是index.htmlabout.html,那么你有两种方式来打包:

指定当前文件的名字:

parcel index.html about.html

使用tokens并创建一个glob:

parcel ./*.html

通过这种方式打包后,如果要访问index.html则必须通过http://localhost:1234/index.html这种形式进行访问,直接访问http://localhost:1234是不行的。

1.1.3 生产环境

生产环境下不会持续监听所需要构建的文件的变化,也就是说只会构建一次,命令也很简单,直接使用:

parcel build index.html

该模式下,所有的代码都是经过压缩处理的。

当然,你也可以指定输出目录:

parcel build entry.js --out-dir build/output

# 或者
parcel build entry.js -d build/output

2. React

通过Parcel打包React项目是非常简单的一件事情:

npm install --save react react-dom
npm install --save-dev parcel-bundler

# 或者使用yarn
yarn add react react-dom
yarn add --dev parcel-bundler

在项目中安装上面的依赖后,就可以使用React来进行搭建项目了,是不是非常简单,好!收工~

什么?你说你不知道怎么开始编写React应用程序?别急,让我一步一步的告诉你:

还是一样的步骤:需要一个index.html文件当做入口文件,然后在里面引入一个index.js文件,而index.js文件中再引入一个App.jsx文件。

index.html:

<body>
    <!-- 这里的id为什么都行,React官方设置的root -->
    <div id="root"></div>
    
    <script src="./index.js"></script>
</body>

index.js:

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";


ReactDOM.render(<App/>, document.getElementById("root"));

App.jsx:

import React from "react";

const App = () => {
  return (<div>Hello React!</div>);
};

export default App;

这个时候再通过Parcel启动服务:

parcel index.html

访问http://localhost:1234就可以看见Hello React!了,接下来就跟正常的React项目的编写一样。

3. Vue

Vue就更简单了,只需要安装一个vue包,如下:

npm install --save vue
npm install --save-dev parcel-bundler

# 或者使用yarn
yarn add vue
yarn add --dev parcel-bundler

至于怎么开始编写Vue项目,方式和上面的React差不多,不过区别在于index.js的编写:

import Vue from 'vue';
import App from './App';

new Vue({
  render: (h) => h(App)
}).$mount("#root")

接下来就可以在App.vue文件中编写Vue项目了!

4. Typescript

一样,需要引入下面的包:

npm install --save-dev typescript
npm install --save-dev parcel-bundler

# 或者使用yarn
yarn add --dev typescript
yarn add --dev parcel-bundler

收工!可以在项目中使用TypeScript语法了,当然,Parcel作为0配置打包框架,也可以直接编译TypeScript。

parcel myTypescriptFile.ts

是不是非常简单!

经过我的实验发现,只要Parcel检测到相关的文件,会自动帮你安装相关的依赖,比如.jsx.vue文件,所以你甚至可以连依赖都不用安装,直接用它打包就好了。

也就是说npm install --save react react-domnpm install --save vue这种命令你都不用敲了,Parcel会自动帮你敲。

注:当然,上面的Vue和React项目的搭建仅仅是推荐编写一些脚本文件或者小型项目,中大型项目还是强烈推荐React和Vue官方的脚手架工具,因为官方针对项目的脚手架做了很多配置和优化,所以不推荐从0搭建。

5. 最后

Parcel需要讲的东西不多,因为它宣传的就是0配置,所以不需要过多的去查看它的官方文档,只需要用到的时候再进行查阅就行,这跟Webpack和Rollup这一类打包工具不一样,使用它们之前必须得进行配置,就因为简单易用这一点,在Webpack表现的如此强势的当下,Parcel还能占有一席之地。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务