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代码
Sep 07 Javascript
javascript forEach通用循环遍历方法
Oct 11 Javascript
jqgrid 简单学习笔记
May 03 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
Aug 27 Javascript
jquery禁止回车触发表单提交
Dec 12 Javascript
bootstrapfileinput实现文件自动上传
Nov 08 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
js中getter和setter用法实例分析
Aug 14 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
VUE项目中加载已保存的笔记实例方法
Sep 14 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 Javascript
用JS实现飞机大战小游戏
Jun 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
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
js实现拖拽功能
2017/03/01 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
Python操作MongoDB详解及实例
2017/05/18 Python
python使用opencv读取图片的实例
2017/08/17 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
pandas数值计算与排序方法
2018/04/12 Python
对python Tkinter Text的用法详解
2018/10/11 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
如何用python批量调整视频声音
2020/12/22 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
四年大学生活的自我评价范文
2014/02/07 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python