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 相关文章推荐
jQuery动态地获取系统时间实现代码
May 24 Javascript
javaScript对文字按照拼音排序实现代码
Dec 27 Javascript
js检测用户输入密码强度
Oct 22 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
javascript中eval解析JSON字符串
Feb 27 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
Mar 14 Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 Javascript
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 Javascript
vue transition 在子组件中失效的解决
Nov 12 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
详解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
第1次亲密接触PHP5(2)
2006/10/09 PHP
yii上传文件或图片实例
2014/04/01 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
JS跨域总结
2012/08/30 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
军训生自我鉴定范文
2013/12/27 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
绿色校园广播稿
2014/10/13 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL