diff --git a/packages/node-resolve/test/fixtures/exports-only-worker-condition-with-browser-field.js b/packages/node-resolve/test/fixtures/exports-only-worker-condition-with-browser-field.js new file mode 100644 index 000000000..5bc278072 --- /dev/null +++ b/packages/node-resolve/test/fixtures/exports-only-worker-condition-with-browser-field.js @@ -0,0 +1,3 @@ +import sample from 'exports-only-worker-condition-with-browser-field'; + +export default sample; diff --git a/packages/node-resolve/test/fixtures/exports-worker-condition-with-browser-field.js b/packages/node-resolve/test/fixtures/exports-worker-condition-with-browser-field.js new file mode 100644 index 000000000..8d29210a8 --- /dev/null +++ b/packages/node-resolve/test/fixtures/exports-worker-condition-with-browser-field.js @@ -0,0 +1,3 @@ +import sample from 'exports-worker-condition-with-browser-field'; + +export default sample; diff --git a/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/browser-field-entry.js b/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/browser-field-entry.js new file mode 100644 index 000000000..4479779b2 --- /dev/null +++ b/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/browser-field-entry.js @@ -0,0 +1 @@ +export default "FROM BROWSER FIELD"; diff --git a/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/package.json b/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/package.json new file mode 100644 index 000000000..b069a4b92 --- /dev/null +++ b/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/package.json @@ -0,0 +1,7 @@ +{ + "name": "exports-only-worker-condition-with-browser-field", + "exports": { + "webworker": "./webworker-condition-entry.js" + }, + "browser": "./browser-field-entry.js" +} diff --git a/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/webworker-condition-entry.js b/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/webworker-condition-entry.js new file mode 100644 index 000000000..0ce422bfb --- /dev/null +++ b/packages/node-resolve/test/fixtures/node_modules/exports-only-worker-condition-with-browser-field/webworker-condition-entry.js @@ -0,0 +1 @@ +export default "FROM WEBWORKER CONDITION"; diff --git a/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/browser-condition-entry.js b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/browser-condition-entry.js new file mode 100644 index 000000000..0e9b5fc03 --- /dev/null +++ b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/browser-condition-entry.js @@ -0,0 +1 @@ +export default "FROM BROWSER CONDITION"; diff --git a/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/browser-field-entry.js b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/browser-field-entry.js new file mode 100644 index 000000000..4479779b2 --- /dev/null +++ b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/browser-field-entry.js @@ -0,0 +1 @@ +export default "FROM BROWSER FIELD"; diff --git a/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/package.json b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/package.json new file mode 100644 index 000000000..238050a78 --- /dev/null +++ b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/package.json @@ -0,0 +1,8 @@ +{ + "name": "exports-worker-condition-with-browser-field", + "exports": { + "webworker": "./webworker-condition-entry.js", + "browser": "./browser-condition-entry.js" + }, + "browser": "./browser-field-entry.js" +} diff --git a/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/webworker-condition-entry.js b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/webworker-condition-entry.js new file mode 100644 index 000000000..0ce422bfb --- /dev/null +++ b/packages/node-resolve/test/fixtures/node_modules/exports-worker-condition-with-browser-field/webworker-condition-entry.js @@ -0,0 +1 @@ +export default "FROM WEBWORKER CONDITION"; diff --git a/packages/node-resolve/test/package-entry-points.js b/packages/node-resolve/test/package-entry-points.js index 46c5a9e2a..13a44ef14 100644 --- a/packages/node-resolve/test/package-entry-points.js +++ b/packages/node-resolve/test/package-entry-points.js @@ -380,3 +380,23 @@ test('does not warn when resolving typescript imports with fallback', async (t) a: 'A' }); }); + +test('custom condition takes precedence over browser field and condition with `browser: true`', async (t) => { + const bundle = await rollup({ + input: 'exports-worker-condition-with-browser-field.js', + plugins: [nodeResolve({ exportConditions: ['browser', 'webworker'], browser: true })] + }); + const { module } = await testBundle(t, bundle); + + t.deepEqual(module.exports, 'FROM WEBWORKER CONDITION'); +}); + +test('custom condition takes precedence over browser field with `browser: true`', async (t) => { + const bundle = await rollup({ + input: 'exports-only-worker-condition-with-browser-field.js', + plugins: [nodeResolve({ exportConditions: ['browser', 'webworker'], browser: true })] + }); + const { module } = await testBundle(t, bundle); + + t.deepEqual(module.exports, 'FROM WEBWORKER CONDITION'); +});