Skip to content

Commit 15deb86

Browse files
authored
Merge pull request #414 from lutovich/1.7-webpack-support
Improve packaging to better support module bundlers
2 parents c348e6b + 1fe6026 commit 15deb86

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+4723
-6965
lines changed

.npmignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ docs/
22
src/
33
build/
44
test/
5-
lib/browser/neo4j-web.test.js
65
.gitignore
76
esdoc.json
8-
gulpfile.js
7+
gulpfile.babel.js
98
runTests.sh
109
runTests.ps1
10+
node_modules/

gulpfile.babel.js

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ var path = require('path');
3838
var minimist = require('minimist');
3939
var cucumber = require('gulp-cucumber');
4040
var install = require("gulp-install");
41-
var os = require('os');
4241
var file = require('gulp-file');
4342
var semver = require('semver');
4443
var sharedNeo4j = require('./test/internal/shared-neo4j').default;
4544
var ts = require('gulp-typescript');
4645
var JasmineConsoleReporter = require('jasmine-console-reporter');
4746
var karmaServer = require('karma').Server;
47+
var transformTools = require('browserify-transform-tools');
4848

4949
/**
5050
* Useful to investigate resource leaks in tests. Enable to see active sockets and file handles after the 'test' task.
@@ -66,9 +66,9 @@ gulp.task('build-browser', function () {
6666
cache: {},
6767
standalone: 'neo4j',
6868
packageCache: {}
69-
}).transform(babelify.configure({
70-
presets: ['env'], ignore: /external/
71-
})).bundle();
69+
}).transform(babelifyTransform())
70+
.transform(browserifyTransformNodeToBrowserRequire())
71+
.bundle();
7272

7373
// Un-minified browser package
7474
appBundler
@@ -85,9 +85,9 @@ gulp.task('build-browser', function () {
8585
});
8686

8787
gulp.task('build-browser-test', function(){
88-
var browserOutput = 'lib/browser/';
88+
var browserOutput = 'build/browser/';
8989
var testFiles = [];
90-
return gulp.src('./test/**/*.test.js')
90+
return gulp.src(['./test/**/*.test.js', '!./test/**/node/*.js'])
9191
.pipe( through.obj( function( file, enc, cb ) {
9292
if(file.path.indexOf('examples.test.js') < 0) {
9393
testFiles.push( file.path );
@@ -99,19 +99,18 @@ gulp.task('build-browser-test', function(){
9999
cb();
100100
}))
101101
.pipe( through.obj( function( testFiles, enc, cb) {
102-
browserify({
102+
browserify({
103103
entries: testFiles,
104104
cache: {},
105105
debug: true
106-
}).transform(babelify.configure({
107-
presets: ['env'], plugins: ['transform-runtime'], ignore: /external/
108-
}))
109-
.bundle(function(err, res){
110-
cb();
111-
})
112-
.on('error', gutil.log)
113-
.pipe(source('neo4j-web.test.js'))
114-
.pipe(gulp.dest(browserOutput))
106+
}).transform(babelifyTransform())
107+
.transform(browserifyTransformNodeToBrowserRequire())
108+
.bundle(function () {
109+
cb();
110+
})
111+
.on('error', gutil.log)
112+
.pipe(source('neo4j-web.test.js'))
113+
.pipe(gulp.dest(browserOutput));
115114
},
116115
function(cb) {
117116
cb()
@@ -121,7 +120,7 @@ gulp.task('build-browser-test', function(){
121120

122121
var buildNode = function(options) {
123122
return gulp.src(options.src)
124-
.pipe(babel({presets: ['env'], plugins: ['transform-runtime'], ignore: ['src/external/**/*.js']}))
123+
.pipe(babel(babelConfig()))
125124
.pipe(gulp.dest(options.dest))
126125
};
127126

@@ -138,13 +137,14 @@ gulp.task('all', function(cb){
138137

139138
// prepares directory for package.test.js
140139
gulp.task('install-driver-into-sandbox', ['nodejs'], function(){
141-
var testDir = path.join(os.tmpdir(), 'sandbox');
140+
var testDir = path.join('build', 'sandbox');
142141
fs.emptyDirSync(testDir);
143142

144143
var packageJsonContent = JSON.stringify({
145-
"dependencies":{
146-
"neo4j-driver" : __dirname
147-
}
144+
'private': true,
145+
'dependencies': {
146+
'neo4j-driver': __dirname
147+
}
148148
});
149149

150150
return file('package.json', packageJsonContent, {src:true})
@@ -164,7 +164,7 @@ gulp.task('test', function (cb) {
164164
});
165165

166166
gulp.task('test-nodejs', ['install-driver-into-sandbox'], function () {
167-
return gulp.src('test/**/*.test.js')
167+
return gulp.src(['./test/**/*.test.js', '!./test/**/browser/*.js'])
168168
.pipe(jasmine({
169169
includeStackTrace: true,
170170
reporter: newJasmineConsoleReporter()
@@ -306,3 +306,31 @@ function newJasmineConsoleReporter() {
306306
activity: false
307307
});
308308
}
309+
310+
function babelifyTransform() {
311+
return babelify.configure(babelConfig());
312+
}
313+
314+
function babelConfig() {
315+
return {
316+
presets: ['env'], plugins: ['transform-runtime']
317+
};
318+
}
319+
320+
function browserifyTransformNodeToBrowserRequire() {
321+
var nodeRequire = '/node';
322+
var browserRequire = '/browser';
323+
324+
return transformTools.makeRequireTransform('bodeToBrowserRequireTransform',
325+
{evaluateArguments: true},
326+
function (args, opts, cb) {
327+
var requireArg = args[0];
328+
var endsWithNodeRequire = requireArg.slice(-nodeRequire.length) === nodeRequire;
329+
if (endsWithNodeRequire) {
330+
var newRequireArg = requireArg.replace(nodeRequire, browserRequire);
331+
return cb(null, 'require(\'' + newRequireArg + '\')');
332+
} else {
333+
return cb();
334+
}
335+
});
336+
}

0 commit comments

Comments
 (0)