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 获取链接(url)参数的方法[正则与截取字符串]
Feb 09 Javascript
JavaScript的类型简单说明
Sep 03 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
代码详解JS操作剪贴板
Feb 11 Javascript
bootstrap下拉框动态赋值方法
Aug 10 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
vue watch关于对象内的属性监听
Apr 22 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 Javascript
JavaScript实现Excel表格效果
Feb 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
建立动态的WML站点(二)
2006/10/09 PHP
基于mysql的论坛(7)
2006/10/09 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
php微信开发之谷歌测距
2018/06/14 PHP
基于jquery 的一个progressbar widge
2010/10/29 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
python2 与python3的print区别小结
2018/01/16 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
keras得到每层的系数方式
2020/06/15 Python
为什么python比较流行
2020/06/19 Python
python 深度学习中的4种激活函数
2020/09/18 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
有个性的自我评价范文
2013/11/15 职场文书
考试退步检讨书
2014/01/15 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书