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 相关文章推荐
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
jQuery实现的分子运动小球碰撞效果
Jan 27 Javascript
BootStrap 动态表单效果
Jun 02 Javascript
实例解析ES6 Proxy使用场景介绍
Jan 08 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 Javascript
教你使用vue-cli快速构建的小说阅读器
May 13 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
Dec 22 Javascript
js里面的变量范围分享
Jul 18 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
Jul 21 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你的验证码安全码?
2007/01/02 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
js转换对象为xml
2017/02/17 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
在Python中使用成员运算符的示例
2015/05/13 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
Python hashlib模块实例使用详解
2019/12/24 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python numpy库np.percentile用法说明
2020/06/08 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
护理专业学生的求职信范文
2013/12/11 职场文书
执行力心得体会
2013/12/31 职场文书
数据保密承诺书
2014/06/03 职场文书
校庆活动策划方案
2014/06/05 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
学习型党组织心得体会
2014/09/12 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书