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操作三大控件(下拉,单选,复选)的方法
Aug 06 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
jquery制作漂亮的弹出层提示消息特效
Dec 23 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
详解AngularJS的通信机制
Jun 18 Javascript
JS取数字小数点后两位或n位的简单方法
Oct 24 Javascript
微信小程序 scroll-view组件实现列表页实例代码
Dec 14 Javascript
基于vue2.0实现简单轮播图
Nov 27 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
vue结合axios与后端进行ajax交互的方法
Jul 06 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
从原生JavaScript到React深入理解
Jul 23 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 session有效期问题
2009/04/26 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
PHP代码加密的方法总结
2020/03/13 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
Python matplotlib实时画图案例
2020/04/23 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
学生打架检讨书1000字
2014/01/16 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
表彰大会新闻稿
2015/07/17 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers