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 事件系统
Jul 22 Javascript
js动态加载以及确定加载完成的代码
Jul 31 Javascript
jquery showModelDialog的使用方法示例详解
Nov 19 Javascript
jQuery结合ajax实现动态加载文本内容
May 19 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
Sep 27 Javascript
javascript 中Cookie读、写与删除操作
Mar 29 Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
解决jquery有正确返回值但不执行success函数的问题
Aug 20 jQuery
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 Javascript
vue-cli点击实现全屏功能
Mar 07 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 数组遍历顺序理解
2009/09/09 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
js模糊查询实例分享
2016/12/26 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
12个步骤教你理解Python装饰器
2019/07/01 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
python中uuid模块实例浅析
2020/12/29 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
药学专业大学生自荐信
2013/09/28 职场文书
广告学专业应届生求职信
2013/10/01 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
业务员岗位职责
2015/02/03 职场文书
消防隐患整改通知书
2015/04/22 职场文书
交通事故案件代理词
2015/05/23 职场文书
德能勤绩工作总结
2015/08/11 职场文书
导游词之桂林
2019/08/20 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
DIY胆机必读:各国电子管评价
2022/04/06 无线电
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL