From 8213b6430eb0cd0ef1066a66297ffd7fb9637c50 Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Wed, 7 Aug 2019 19:14:48 -0700 Subject: [PATCH] Support custom names for "browser" field resolution Fix: https://github.com/browserify/browserify/issues/1917 --- index.js | 11 +++++++++-- readme.markdown | 4 +++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 54dcf2c6e..858a0cbbf 100644 --- a/index.js +++ b/index.js @@ -83,12 +83,19 @@ function Browserify (files, opts) { self._transforms = []; self._entryOrder = 0; self._ticked = false; - self._bresolve = opts.browserField === false + + var browserField = opts.browserField + self._bresolve = browserField === false ? function (id, opts, cb) { if (!opts.basedir) opts.basedir = path.dirname(opts.filename) resolve(id, opts, cb) } - : bresolve + : typeof browserField === 'string' + ? function (id, opts, cb) { + opts.browser = browserField + bresolve(id, opts, cb) + } + : bresolve ; self._syntaxCache = {}; diff --git a/readme.markdown b/readme.markdown index 7d6f87e62..87ee6d925 100644 --- a/readme.markdown +++ b/readme.markdown @@ -447,7 +447,9 @@ useful for preserving the original paths that a bundle was generated with. `opts.bundleExternal` boolean option to set if external modules should be bundled. Defaults to true. -When `opts.browserField` is false, the package.json browser field will be ignored. +When `opts.browserField` is false, the package.json browser field will be +ignored. When `opts.browserField` is set to a `string`, then a custom field name +can be used instead of the default `"browser"` field. When `opts.insertGlobals` is true, always insert `process`, `global`, `__filename`, and `__dirname` without analyzing the AST for faster builds but