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实现的动态增加表格示例自己写的
Oct 21 Javascript
轻量级javascript 框架Backbone使用指南
Jul 24 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
Node.js实现JS文件合并小工具
Feb 02 Javascript
javascript中使用未定义变量或值的情况分析
Jul 19 Javascript
Javascript Function.prototype.bind详细分析
Dec 29 Javascript
js异步编程小技巧详解
Aug 14 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
Jan 23 Javascript
面试题:react和vue的区别分析
Apr 08 Javascript
微信小程序HTTP接口请求封装代码实例
Sep 05 Javascript
vue中jsonp插件的使用方法示例
Sep 10 Javascript
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
Apr 09 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 防止表单重复提交的方法
2011/08/08 PHP
用php解析html的实现代码
2011/08/08 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
react基本安装与测试示例
2020/04/27 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
python制作最美应用的爬虫
2015/10/28 Python
基于Python闭包及其作用域详解
2017/08/28 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python global关键字的用法详解
2019/09/05 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
新锐科技Java程序员面试题
2016/07/25 面试题
大学军训感言400字
2014/03/11 职场文书
党建目标管理责任书
2014/07/25 职场文书
如何用python反转图片,视频
2021/04/24 Python
JAVA API 实用类 String详解
2021/10/05 Java/Android
Java中API的使用方法详情
2022/04/06 Java/Android