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 相关文章推荐
DIV始终居中的js代码
Feb 17 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
JS中Array数组学习总结
Jan 18 Javascript
vue组件父子间通信详解(三)
Nov 07 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
Nov 17 Javascript
JavaScript生成简单等差数列
Nov 28 Javascript
vue-cli常用设置总结
Feb 24 Javascript
vue.js数据绑定操作详解
Apr 23 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
Apr 04 Javascript
create-react-app中添加less支持的实现
Nov 15 Javascript
vue实现给div绑定keyup的enter事件
Jul 31 Javascript
vant中的toast层级改变操作
Nov 04 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
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
php查询操作实现投票功能
2016/05/09 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
JS作用域深度解析
2016/12/29 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
Python中下划线的使用方法
2015/03/27 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
Django框架模板的使用方法示例
2019/05/25 Python
python匿名函数用法实例分析
2019/08/03 Python
django实现支付宝支付实例讲解
2019/10/17 Python
python返回数组的索引实例
2019/11/28 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
Java工程师面试集锦之Spring框架
2013/06/16 面试题
工作说明书格式
2014/07/29 职场文书
商品陈列协议书
2014/09/29 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
党员证明模板
2015/06/19 职场文书
使用 Apache 反向代理的设置技巧
2022/01/18 Servers