Skip to content

Commit

Permalink
if _options.basedir exists, use it in external, exclude and ignore
Browse files Browse the repository at this point in the history
Adding test for external basedir case
  • Loading branch information
tufandevrim committed May 10, 2016
1 parent 071642a commit 007057c
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 3 deletions.
6 changes: 3 additions & 3 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -252,23 +252,23 @@ Browserify.prototype.external = function (file, opts) {
}

if (!opts) opts = {};
var basedir = defined(opts.basedir, process.cwd());
var basedir = defined(opts.basedir, self._options.basedir, process.cwd());
this._external.push(file);
this._external.push('/' + path.relative(basedir, file));
return this;
};

Browserify.prototype.exclude = function (file, opts) {
if (!opts) opts = {};
var basedir = defined(opts.basedir, process.cwd());
var basedir = defined(opts.basedir, this._options.basedir, process.cwd());
this._exclude.push(file);
this._exclude.push('/' + path.relative(basedir, file));
return this;
};

Browserify.prototype.ignore = function (file, opts) {
if (!opts) opts = {};
var basedir = defined(opts.basedir, process.cwd());
var basedir = defined(opts.basedir, this._options.basedir, process.cwd());

// Handle relative paths
if (file[0] === '.') {
Expand Down
39 changes: 39 additions & 0 deletions test/external_basedir.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
var browserify = require('../');
var vm = require('vm');
var test = require('tap').test;

test('external', function (t) {
t.plan(2);
var baseDir = __dirname;
var splitFile = baseDir + '/external_basedir/y.js';
var mainSrc = '';
var splitSrc = '';
var pending = 2;

// main bundle should not include splitFile
var b = browserify(baseDir + '/external_basedir/main.js', {basedir: baseDir});
b.external(splitFile); // no need to specify basedir option if it is already set for b
b.bundle(function (err, src) {
if (err) return t.fail(err);
mainSrc = src;
pending--;
done();
});

// consider b2 as for split or vendor bundle
var b2 = browserify([], {basedir: baseDir});
b2.require(splitFile, {expose: splitFile.replace(baseDir, '')});
b2.bundle(function (err, src) {
if (err) return t.fail(err);
splitSrc = src;
pending--;
done();
});

function done() {
if (pending !== 0) {
return;
}
vm.runInNewContext(splitSrc + mainSrc, { t: t });
}
});
2 changes: 2 additions & 0 deletions test/external_basedir/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
t.equal(require('./x'), 'foo');
t.equal(require('./y'), 'bar');
1 change: 1 addition & 0 deletions test/external_basedir/x.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = 'foo';
1 change: 1 addition & 0 deletions test/external_basedir/y.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = 'bar';

0 comments on commit 007057c

Please sign in to comment.