Skip to content

Commit f76a8fd

Browse files
Merge pull request #7 from formio/react-gulp-webpack-integration
Added the support for the webpack
2 parents 84901ec + 9fdfbfb commit f76a8fd

File tree

4 files changed

+114
-2
lines changed

4 files changed

+114
-2
lines changed

gulpfile.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,19 @@
22
'use strict';
33
var gulp = require('gulp');
44
var plugins = require('gulp-load-plugins')();
5+
var webpack_formio = require('./webpack-formio.config.js');
6+
var webpack_app = require('./webpack-app.config.js');
7+
58
plugins.source = require('vinyl-source-stream');
69
plugins.browserify = require('browserify');
710
plugins.watchify = require('watchify');
11+
plugins.webpack = require('webpack-stream');
812
plugins.babelify = require('babelify');
913
plugins.reactify = require('reactify');
1014
plugins.shim = require('browserify-shim');
1115
plugins.browserSync = require('browser-sync');
1216

17+
1318
gulp.task('clean', require('del').bind(null, ['dist/build']));
1419
gulp.task('copy', require('./gulp/copy')(gulp, plugins));
1520
gulp.task('watch', require('./gulp/watch')(gulp, plugins));
@@ -18,4 +23,6 @@ gulp.task('app', require('./gulp/app')(gulp, plugins));
1823
gulp.task('serve', require('./gulp/serve')(gulp, plugins));
1924
gulp.task('build', ['clean', 'scripts', 'app']);
2025

21-
gulp.task('default', ['watch', 'serve']);
26+
gulp.task('webpack_formio', webpack_formio (gulp, plugins));
27+
gulp.task('webpack_app', webpack_app (gulp, plugins));
28+
gulp.task('build_webpack', ['clean', 'webpack_formio', 'webpack_app']);

package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
"react-widgets": "^3.3.1"
3535
},
3636
"devDependencies": {
37+
"babel-core": "^6.9.1",
38+
"babel-loader": "^6.2.4",
39+
"babel-preset-es2015": "^6.9.0",
40+
"babel-preset-react": "^6.5.0",
3741
"babelify": "^6.3.0",
3842
"browser-sync": "^2.9.8",
3943
"browserify": "^13.0.0",
@@ -46,14 +50,16 @@
4650
"gulp-notify": "^2.2.0",
4751
"gulp-react": "^3.1.0",
4852
"gulp-rename": "^1.2.2",
53+
"gulp-sourcemaps": "^1.6.0",
4954
"gulp-streamify": "^1.0.2",
5055
"gulp-uglify": "^1.4.1",
5156
"react": "^0.14.0",
5257
"react-dom": "^0.14.0",
5358
"react-transform-catch-errors": "^1.0.0",
5459
"reactify": "^1.1.1",
5560
"vinyl-source-stream": "^1.1.0",
56-
"watchify": "^3.4.0"
61+
"watchify": "^3.4.0",
62+
"webpack-stream": "^3.2.0"
5763
},
5864
"peerDependencies": {
5965
"react": "^0.14.0 || ^15.0.0",

webpack-app.config.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
var uglify = require('gulp-uglify');
2+
3+
module.exports = function(gulp, plugins) {
4+
return function () {
5+
function handleErrors() {
6+
var args = Array.prototype.slice.call(arguments);
7+
plugins.notify.onError({
8+
title: 'Compile Error',
9+
message: '<%= error.message %>'
10+
}).apply(this, args);
11+
this.emit('end'); // Keep gulp from hanging on this task
12+
}
13+
14+
return gulp.src('./src/app.js')
15+
.pipe(plugins.webpack({
16+
output: {
17+
filename: "app.js"
18+
},
19+
module: {
20+
loaders: [
21+
{
22+
test: /require\.js$/,
23+
loader: "exports?requirejs!script"
24+
},
25+
{
26+
test: /\.jsx?$/,
27+
loader: 'babel',
28+
exclude: /node_modules/,
29+
query: {
30+
presets: ['react', 'es2015']
31+
}
32+
}
33+
],
34+
resolve: {
35+
extensions: ['', '.js', '.jsx'],
36+
alias: {
37+
requirejs$: "./dist/example/"
38+
},
39+
},
40+
noParse: [
41+
/node_modules\/formiojs\//,
42+
],
43+
44+
}
45+
}))
46+
.pipe(plugins.streamify(plugins.uglify()))
47+
.pipe(gulp.dest('./dist/example/'));
48+
}
49+
}

webpack-formio.config.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
var uglify = require('gulp-uglify');
2+
3+
module.exports = function(gulp, plugins) {
4+
return function () {
5+
6+
function handleErrors() {
7+
var args = Array.prototype.slice.call(arguments);
8+
plugins.notify.onError({
9+
title: 'Compile Error',
10+
message: '<%= error.message %>'
11+
}).apply(this, args);
12+
this.emit('end'); // Keep gulp from hanging on this task
13+
}
14+
15+
return gulp.src('./src/Formio.js')
16+
.pipe(plugins.webpack({
17+
output: {
18+
filename: "Formio.min.js"
19+
},
20+
module: {
21+
loaders: [
22+
{
23+
test: /require\.js$/,
24+
loader: "exports?requirejs!script"
25+
},
26+
{
27+
test: /\.jsx?$/,
28+
loader: 'babel',
29+
exclude: /node_modules/,
30+
query: {
31+
presets: ['react', 'es2015']
32+
}
33+
}
34+
],
35+
resolve: {
36+
extensions: ['', '.js', '.jsx'],
37+
alias: {
38+
requirejs$: "./dist/build/"
39+
},
40+
},
41+
noParse: [
42+
/node_modules\/formiojs\//,
43+
],
44+
45+
}
46+
}))
47+
.pipe(plugins.streamify(plugins.uglify()))
48+
.pipe(gulp.dest('./dist/build/'));
49+
}
50+
}

0 commit comments

Comments
 (0)