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图片切换的具体方法(带缩略图版)
Nov 12 Javascript
jQuery中on()方法用法实例详解
Feb 06 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
将List对象列表转换成JSON格式的类实现方法
Jul 04 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
原生js和css实现图片轮播效果
Feb 07 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 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
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
pip安装python库的方法总结
2019/08/02 Python
使用python去除图片白色像素的实例
2019/12/12 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
windows支持哪个版本的python
2020/07/03 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
华为c/c++笔试题
2016/01/25 面试题
大学生的网上创业计划书
2013/12/31 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
物业工程部岗位职责
2015/02/11 职场文书
《迟到》教学反思
2016/02/24 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android