使用gulp进行React任务的构建
如果你不熟悉gulp的操作,可以看下下面的教程:
对于gulp在react中的构建,找了很多资料,看了很多文章,也根据文章试验了很多遍,但是就是不成功。很多文章其实都或多或少缺少一些步骤,而且还不给源文件参考,这对于新手来说就是大写的懵逼。最后终于发现一篇文章可以实现,就转载了。后面可以好好写react了。
示例目录结构如下:
- libs/
- react/
- node_modules/
- src/
- main.js
- gulpfile.js
- index.html
- bundle.js
- package.json
其中,index.html代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="example"></div>
<script src="bundle.js"></script>
</body>
</html>
src/main.js代码如下:
let React = require('react');
let ReactDOM = require('react-dom');
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('example')
);
在这里,选择使用browserify进行打包,gulp进行任务构建。由于使用了ES2015和JSX语法,因此使用Babel进行转换。
首先安装依赖:
npm install --save react react-dom
npm install --save-dev gulp browserify babelify vinyl-source-stream
然后gulpfile.js代码为:
var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
gulp.task('script:build', function() {
browserify('src/main.js')
.transform(babelify, {
presets: ['es2015', 'react']
})
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./'));
});
gulp.task('default', ['script:build']);
但此时执行会报错,因为babelify需要安装相应的preset,因此在这里需要:
npm install --save-dev babel-preset-es2015 babel-preset-react
然后执行gulp即可。
此时会将react和react-dom一起打包到bundle.js中。
如果不希望将外部依赖打包进来,即此时index.html中加入如下代码:
<script src="libs/react/react.min.js"></script>
<script src="libs/react/react-dom.min.js"></script>
此时需要安装browserify-shim,即
npm install --save-dev browserify-shim
然后在package.json中配置:
"browserify-shim": {
"react": "global:React",
"react-dom": "global:ReactDOM"
}
此时gulpfile.js代码为:
var gulp = require('gulp');
var browserify = require('browserify');
var shim = require('browserify-shim');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
gulp.task('script:build', function() {
browserify('src/main.js')
.transform(babelify, {
presets: ['es2015', 'react']
})
.transform(shim)
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./'));
});
gulp.task('default', ['script:build']);
与之前相比,多了一句.transform(shim)。
原文链接:http://syaning.com/2015/11/09/gulp-react-task-build/?utm_source=tuicool&utm_medium=referral
使用gulp进行React任务的构建的更多相关文章
- 基于webpack+react+antd 项目构建
工欲善其事必先利其器,学习React也是如此. 下面分享一篇基于webpack+react+antd 项目构建的好文章, https://blog.hduzplus.xyz/articles/2017 ...
- 如何使用TDD和React Testing Library构建健壮的React应用程序
如何使用TDD和React Testing Library构建健壮的React应用程序 当我开始学习React时,我努力的一件事就是以一种既有用又直观的方式来测试我的web应用程序. 每次我想测试它时 ...
- Gulp安装及配合组件构建前端开发一体化(转)
Gulp安装及配合组件构建前端开发一体化 所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3p484). Gulp 是一款基于任务的设计模式的自动化工具 ...
- 使用 Yarn workspace,TypeScript,esbuild,React 和 Express 构建 K8S 云原生应用(一)
本文将指导您使用 K8S ,Docker,Yarn workspace ,TypeScript,esbuild,Express 和 React 来设置构建一个基本的云原生 Web 应用程序. 在本教程 ...
- gulp+sass+react前端开发,环境搭建
由于前端技术的发展与市场需求的提高,前端开发已经不仅仅是写几个页面那么简单.如何有效的开发.管理一个越来越庞大.越来越复杂的前端项目,成为互联网团队必须要面对的难题. 各种js库.ui库曾经火极一时. ...
- Gulp安装及配合组件构建前端开发一体化
原文:http://www.dbpoo.com/getting-started-with-gulp/ 所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3 ...
- Gulp:基于流的自动化构建工具
前言 先说说为什么会使用gulp. 当你沉醉于撸代码之时,是否想过正规的前端代码需要走哪些流程,复杂的不说了,有几点想必你也思考过,比如: 1.代码的压缩合并.图片压缩怎么搞: 2.代码校验,是否规范 ...
- 【JAVASCRIPT】React学习-如何构建一个组件
摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 组件化思想 组件就是 UI + UI 交互逻辑,组件有三个常规map , 分别为state 状态 . props 数据 ...
- 基于gulp的前端自动化开发构建新
关于gulp的使用,已经在之前写过一篇文章,但是遗留了一个问题.问题是实现文件的增量式更新,就是给html引入的js和css文件打上标记.每次更新标记更新. 上篇文章想通过开发同时实现标记的实时更新, ...
随机推荐
- CSS从大图片上截取小图标的操作以及三角形的画法
#name{ background:url(images/name.png) no-repeat 2px 2px; background-position: -2px -70px;//其中这个是定位图 ...
- 转:pack URI in WPF
一开始看到WPF里面经常用如下语句来构造资源文件Uri: Uri uri = new Uri("/AssemblyName;component/image.png"); 我还以为这 ...
- Python学习笔记- Python threading模块
Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import time d ...
- 设置EditText光标位置
editext.setSelection(int index);
- cocos2d-x 之 CCArray 源码分析(2)
cocos2d-x 自己实现了一个数组CCArray ,下面我们来分析一下CCArray的源码 CCArray继承CCObject,所以,CCArray也具有引用计数功能和内存自动管理功能. 数组的源 ...
- text-indent
<div class="top wd"> <div class="con fl "><a href="#"&g ...
- linux 管道命令 竖线 ‘ | ’
管道符号,是unix功能强大的一个地方,符号是一条竖线:"|", 用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为comm ...
- java图形化编程
转载 学习Java Swing图形化编程,我们首先要了解三个最基本的概念:顶层容器,控件,布局. 下面就来介绍一下这三个基本概念 1.顶层容器 什么是顶层容器?当我们使用Java进行图形编程的时候,图 ...
- 『TCP/IP详解——卷一:协议』读书笔记——02
2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...
- [UE4]武器碰撞
实现武器战斗伤害系统,击中时如何发出碰撞事件产生伤害,目前探索的有通过物理碰撞和LineTrace两种方法. 物理碰撞通过Overlap事件的方法,优点是易于实现,缺点是无法具体到碰撞骨骼位置,低帧数 ...