博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
零配置构建工具:parcel
阅读量:5973 次
发布时间:2019-06-19

本文共 2824 字,大约阅读时间需要 9 分钟。

更多内容欢迎来到博客:

为什么学习parcel

  • 17年12月6日,parcel发布了第一个正式版本,目前已经在GitHub上收获了17.7k+个start。
  • Parcel是一个Web应用程序打包器(bundler),与以往使用过的前端构建工具对比,零配置似乎非常具有优势。
  • 官方表示parcel的打包速度在有cache的情况下,打包速度几乎是webpack的数倍(官方10倍,应该是最佳情况0.0)

安装

npm i -g parcel-bundler

打包

entry

parcel可以用任何文件作为打包入口,一般推荐使用html或js文件。

资源

parcel对js,css,html等特定文件有特殊的支持,parcel会自动分析文件中的依赖关系,相同类型的资源被组合在一起成为相同的输出包。如果你在js文件中引入了其他类型的文件(例如css),那么css依旧会被单独打包,而不是作为内联一并打包到js中。html中的通过链接引入的文件(例如图片,css,js文件)也会被提取并单独打包。

parcel只是使用CommonJS和ES6的模块语法来到如文件。css支持@import方式引入,

// 使用 CommonJS 语法导入模块const a = require('./a');// 使用 ES6 import 语法导入模块import a from './a';/* 导入另一个 CSS 文件 */@import './a.css';

转换

现在前端项目中使用到的预处理语言及扩展语言越来越多,css预处理语言有less,sass,stylus等,javaScript的扩展语言有TypeScript,CoffeeScript等。还有pug,eje,jsx,vue等模板,需要在打包时进行转换。

parcel中已经内置了很多常见的转换和编译器,也可以使用插件来扩展。

在parcel中使用Babel,PostCSS,PostHTML的方式与其单独使用或与其他打包器配合使用的方式相同。

先安装到项目中

npm i -D babel-preset-envnpm i -D postcss-modules autoprefixernpm i -D posthtml-img-autosize

然后创建配置文件,例如.babelrc

{  "presets": ["env"]}

代码拆分

若果要将代码分割成多个单独的包以节省加载时间。parcel使用动态import()函数来实现引入和懒加载。用这种方式引入会被拆分成单独的包并且按需加载。

import()和require()的使用相似,但是import返回的是一个Promise,这意味着它是异步的。

这可以用在路由配置和页面渲染中:

//vue路由{     path: 'home',     component: () =>import('../pages/home.vue')}//页面渲染import('./pages/about').then(function (page) {  // 渲染页面  page.render();});

既然是Promise,这意味着我们可以结合Generator函数(async函数);

// 设置页面名称到动态引入的映射中。// 在使用前,这些页面都不会被加载。const pages = {  about: import('./pages/about'),  blog: import('./pages/blog')};async function renderPage(page) {  // 懒加载请求页面。  const page = await pages[page];  return page.render();}

开发和生产环境

开发模式

开发过程中,使用以下命令,会开启代码监听并打开parcel的内置服务器,在浏览器中打开localhost://1234,就可以看到。也可以使用-p命令修改默认端口

parcel index.html

如果有自己的服务器,你可以在watch 模式下运行 Parcel 。当文件改变它仍然会自动重新构建并支持热替换,但是不会启动 web 服务。

parcel watch index.html

当你准备在生产模式下创建,build 模式会关闭监听并且只建立一次。

生产模式

当需要绑定应用程序的时候,你可以使用 Parcel 的生产模式。

parcel build index.html

这将关闭监听模式和热模块替换,所以它只会编译一次。它还会开启 minifier 来减少输出包文件的大小。Parcel 使用的 minifiers 有 JavaScript 的 uglify-es ,CSS 的 cssnano 还有 HTML 的 htmlnano。

启动生产模式还要设置环境变量 NODE_ENV=production 。像 React 这种只用开发调试功能的大型库,通过设置这个环境变量来禁用调试功能,从而构建得更小更快。

命令参数

  • -p, --port <port> 设置服务器端口
  • --https 在https协议上运行
  • -o, --open 自动在默认浏览器打开
  • -d, --out-dir <path> 设置输入路径默认为dist
  • --public-url <url> 设置服务器运行的路劲. 默认与--out-dir option 设置的相同
  • --no-hmr 关闭热模块替换
  • --no-cache 关闭缓存
  • -V, --version 版本信息
  • -h, --help 帮助信息

插件

Parcel 采用与许多其它工具稍微不同的策略,许多常见的格式都被开箱即用地包含进来,而不需要安装或者配置额外的插件。然而,有些情况你可能会想在非标准的情况下扩展 Parcel 的能力,而那些时候,插件是被支持的。安装的插件会基于 package.json 的依赖会被自动检测并加载。parcel插件通常以"parcel-plugin-*"命名。

目前parcel的插件并不多,常用到的有:

  • parcel-plugin-vue
  • parcel-plugin-eslint
  • parcel-plugin-inlinesvg
  • parcel-plugin-pug
  • parcel-plugin-typescript
  • parcel-plugin-fable
  • parcel-plugin-handlebars
  • parcel-plugin-svelet
  • parcel-plugin-elm
  • parcel-plugin-markdown
  • parcel-plugin-stylelint
  • parcel-plugin-angular
  • parcel-plugin-mustache

零配置打包vue

项目地址:

转载地址:http://tydox.baihongyu.com/

你可能感兴趣的文章
nagios+rrdtool+pnp 分析图表
查看>>
Redis分布式锁的正确实现方式
查看>>
[转载] 达特茅斯学院 Dartmouth College
查看>>
apache安装
查看>>
我的友情链接
查看>>
HTTP协议详解
查看>>
自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
查看>>
Go语言开发(十六)、Go语言常用标准库六
查看>>
小梅科普:白帽子-高端信息安全培训
查看>>
JavaScript学习总结(9)——JS常用函数(一)
查看>>
Maven+SpringMVC+MyBatis实现系统(一)
查看>>
易宝典文章——如何在Exchange 2010中使用PowerShell文本文件批量移动邮箱
查看>>
智能dns 根据地区解析
查看>>
VS2012配置Git并连接到osc@git
查看>>
mysql完整备份,超过十天的自动删除
查看>>
索尼高清影视技术学院参观观后感
查看>>
jQuery 文本编辑器插件 HtmlBox 使用
查看>>
生活随笔
查看>>
多台服务器联合工作之samba+wordpress
查看>>
如何优化 Android Studio 启动、编译和运行速度?
查看>>