From f94730896c0ab469337923fb337214edc2048192 Mon Sep 17 00:00:00 2001 From: Michael Wiencek Date: Thu, 13 Nov 2014 14:50:37 -0600 Subject: [PATCH] expose property doesn't work with fullPaths enabled (fixes #850) --- index.js | 5 +++++ test/entry/needs_three.js | 1 + test/entry/package.json | 5 +++++ test/entry/three.js | 1 + test/full_paths.js | 18 ++++++++++++++++++ 5 files changed, 30 insertions(+) create mode 100644 test/entry/needs_three.js create mode 100644 test/entry/package.json create mode 100644 test/entry/three.js diff --git a/index.js b/index.js index bd7068ccf..aa98db405 100644 --- a/index.js +++ b/index.js @@ -597,6 +597,11 @@ Browserify.prototype._label = function (opts) { if (row.indexDeps) row.deps = row.indexDeps || {}; Object.keys(row.deps).forEach(function (key) { + if (self._expose[key]) { + row.deps[key] = key; + return; + } + var afile = path.resolve(path.dirname(row.file), key); var rfile = '/' + path.relative(basedir, afile); if (self._external.indexOf(rfile) >= 0) { diff --git a/test/entry/needs_three.js b/test/entry/needs_three.js new file mode 100644 index 000000000..9def415e6 --- /dev/null +++ b/test/entry/needs_three.js @@ -0,0 +1 @@ +require("three"); diff --git a/test/entry/package.json b/test/entry/package.json new file mode 100644 index 000000000..ad2f40384 --- /dev/null +++ b/test/entry/package.json @@ -0,0 +1,5 @@ +{ + "browser": { + "three": "./three.js" + } +} diff --git a/test/entry/three.js b/test/entry/three.js new file mode 100644 index 000000000..690aad34a --- /dev/null +++ b/test/entry/three.js @@ -0,0 +1 @@ +module.exports = 3; diff --git a/test/full_paths.js b/test/full_paths.js index 4f04035e2..641403038 100644 --- a/test/full_paths.js +++ b/test/full_paths.js @@ -1,6 +1,7 @@ var unpack = require('browser-unpack'); var browserify = require('../'); var test = require('tap').test; +var vm = require('vm'); var deps = [ __dirname + '/entry/main.js', @@ -37,3 +38,20 @@ test('fullPaths disabled', function (t) { }); }); }); + +test('fullPaths enabled, with custom exposed dependency name', function (t) { + t.plan(1); + + var b = browserify({ + entries: [__dirname + '/entry/needs_three.js'], + fullPaths: true + }); + + b.require(__dirname + '/entry/three.js', { expose: 'three' }); + + b.bundle(function (err, src) { + t.doesNotThrow(function () { + vm.runInNewContext(src, { console: console, t: t }); + }); + }); +});