Parcel 打包示例(React HelloWorld)


Posted in Javascript onJanuary 16, 2018

Parcel 打包特点

极速打包时间

Parcel 使用 worker 进程去启用多核编译。同时有文件系统缓存,即使在重启构建后也能快速再编译。

 将你所有的资源打包

Parcel 具备开箱即用的对 JS, CSS, HTML, 文件 及更多的支持,而且不需要插件。

自动转换

如若有需要,Babel, PostCSS, 和PostHTML甚至 node_modules 包会被用于自动转换代码.

配置代码分拆

使用动态 import() 语法, Parcel 将你的输出文件束(bundles)分拆,因此你只需要在初次加载时加载你所需要的代码。

 热模块替换

Parcel 无需配置,在开发环境的时候会自动在浏览器内随着你的代码更改而去更新模块。

友好的错误日志

当遇到错误时,Parcel 会输出 语法高亮的代码片段,帮助你定位问题。

使用 Parcel 打包的 React HelloWorld 应用。GitHub 地址: https://github.com/justjavac/parcel-example/tree/master/react-helloworld

0. 新建目录

mkdir react-helloworld
cd react-helloworld

1. 初始化 npm

yarn init -y

npm init -y

此时会创建要给 package.json 文件,文件内容:

{
 "name": "parcel-example-react-helloworld",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
 },
 "keywords": [],
 "author": "",
 "license": "ISC"
}

2. 添加 React

yarn:

yarn add react react-dom

npm:

npm install react react-dom --save

package.json 文件内容:

{
  "name": "parcel-example-react-helloworld",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
   "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
- "license": "ISC"
+ "license": "ISC",
+ "dependencies": {
+  "react": "^16.2.0",
+  "react-dom": "^16.2.0"
+ }
 }

3. 添加 Babel

新建 .babelrc 文件

touch .babelrc

输入内容:

{
 "presets": ["react"]
}

添加 babel-preset-react:

yarn:

yarn add babel-preset-react -D

npm:

npm install babel-preset-react --D

此时 package.json 文件内容:

{
  "name": "parcel-example-react-helloworld",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
   "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
   "react": "^16.2.0",
   "react-dom": "^16.2.0"
-  }
+  },
+  "devDependencies": {
+   "babel-preset-react": "^6.24.1"
+  }
 }

5. 添加 Parcel

yarn:

yarn add parcel-bundler -D

npm:

npm install parcel-bundler --D

此时 package.json 文件内容:

{
  "name": "parcel-example-react-helloworld",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
   "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
   "react": "^16.2.0",
   "react-dom": "^16.2.0"
  },
  "devDependencies": {
-   "babel-preset-react": "^6.24.1"
+   "babel-preset-react": "^6.24.1",
+   "parcel-bundler": "^1.0.3"  
  }
 }

6. 新建 index.html 文件

内容

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

7. 新建 index.js 文件

import React from "react";
import ReactDOM from "react-dom";
const App = () => {
 return <h1>Hello World!</h1>;
};

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

8. 添加打包命令

{
  "name": "parcel-example-react-helloworld",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
-  "test": "echo \"Error: no test specified\" && exit 1"
+  "start": "parcel index.html"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
   "react": "^16.2.0",
   "react-dom": "^16.2.0"
  },
  "devDependencies": {
    "babel-preset-react": "^6.24.1"
    "babel-preset-react": "^6.24.1",
    "parcel-bundler": "^1.0.3"  
  }
 }

9. 完成

运行

yarn start

npm start

在浏览器中打开 http://localhost:1234

打包过程会生产 .cache 和 dist 两个目录,如果是 git 工程,可以新建 .gitignore 文件忽略这两个目录:

.cache
dist
node_modules

GitHub 地址: https://github.com/justjavac/parcel-example/tree/master/react-helloworld

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript indexOf函数使用说明
Jul 03 Javascript
javascript 函数声明与函数表达式的区别介绍
Oct 05 Javascript
JavaScript原型链示例分享
Jan 26 Javascript
七个很有意思的PHP函数
May 12 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
jQuery实现的简单百分比进度条效果示例
Aug 01 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
Aug 16 Javascript
JavaScript门面模式详解
Oct 19 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 #Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 #Javascript
动态加载权限管理模块中的Vue组件
Jan 16 #Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 #Javascript
解析Angular 2+ 样式绑定方式
Jan 15 #Javascript
基于jquery的on和click的区别详解
Jan 15 #jQuery
仿淘宝JSsearch搜索下拉深度用法
Jan 15 #Javascript
You might like
社区(php&amp;&amp;mysql)一
2006/10/09 PHP
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
PHP可变函数学习小结
2015/11/29 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
js计算页面刷新的次数
2009/07/20 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
python实现linux下抓包并存库功能
2018/07/18 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
flask开启多线程的具体方法
2020/08/02 Python
Python 可视化神器Plotly详解
2020/12/26 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
结婚典礼证婚词
2014/01/08 职场文书
科技工作者先进事迹
2014/08/16 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python