Skip to content

Commit

Permalink
Merge pull request #1742 from devongovett/preserve-symlinks
Browse files Browse the repository at this point in the history
Add support for the Node v6 preserve-symlinks option
  • Loading branch information
goto-bus-stop committed Jan 31, 2018
2 parents b4fcdea + 201708b commit 2b9b319
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 5 deletions.
4 changes: 4 additions & 0 deletions bin/advanced.txt
Expand Up @@ -100,6 +100,10 @@ Advanced Options:

Register MODULE as a plugin.

--preserve-symlinks

Preserves symlinks when resolving modules.

Passing arguments to transforms and plugins:

For -t, -g, and -p, you may use subarg syntax to pass options to the
Expand Down
3 changes: 2 additions & 1 deletion bin/args.js
Expand Up @@ -14,7 +14,7 @@ module.exports = function (args, opts) {
'boolean': [
'deps', 'pack', 'ig', 'dg', 'im', 'd', 'list', 'builtins',
'commondir', 'bare', 'full-paths', 'bundle-external', 'bf',
'node'
'node', 'preserve-symlinks'
],
string: [ 's', 'r', 'u', 'x', 't', 'i', 'o', 'e', 'c', 'it' ],
alias: {
Expand Down Expand Up @@ -107,6 +107,7 @@ module.exports = function (args, opts) {
browserField: argv.browserField,
transformKey: argv['transform-key'] ? ['browserify', argv['transform-key']] : undefined,
dedupe: argv['dedupe'],
preserveSymlinks: argv['preserve-symlinks'],

detectGlobals: argv.detectGlobals,
insertGlobals: argv['insert-globals'] || argv.ig,
Expand Down
13 changes: 9 additions & 4 deletions index.js
Expand Up @@ -502,10 +502,15 @@ Browserify.prototype._createDeps = function (opts) {
}
}
if (err) cb(err, file, pkg)
else if (file) fs.realpath(file, function (err, res) {
cb(err, res, pkg, file);
});
else cb(err, null, pkg)
else if (file) {
if (opts.preserveSymlinks && parent) {
return cb(err, path.resolve(file), pkg, file)
}

fs.realpath(file, function (err, res) {
cb(err, res, pkg, file);
});
} else cb(err, null, pkg)
});
};

Expand Down
15 changes: 15 additions & 0 deletions test/preserve-symlinks.js
@@ -0,0 +1,15 @@
var browserify = require('../');
var vm = require('vm');
var test = require('tap').test;

test('optionally preserves symlinks', function (t) {
t.plan(2);

var b = browserify(__dirname + '/preserve_symlinks/a/index.js', {preserveSymlinks: true});
b.bundle(function (err, buf) {
t.ok(!err);
t.ok(buf);
var src = buf.toString('utf8');
vm.runInNewContext(src, {});
});
});
1 change: 1 addition & 0 deletions test/preserve_symlinks/a/index.js
@@ -0,0 +1 @@
require('b');
1 change: 1 addition & 0 deletions test/preserve_symlinks/a/node_modules/b

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file.
1 change: 1 addition & 0 deletions test/preserve_symlinks/b/index.js
@@ -0,0 +1 @@
require('c');

0 comments on commit 2b9b319

Please sign in to comment.