From 7dff79bae30e6c25ad1182b2c9160a7b55d52701 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 24 Sep 2021 09:23:00 -0400 Subject: [PATCH] [fix] externalize middlewares.js when using adapter-node's entryPoint (#2482) --- .changeset/mighty-ears-divide.md | 5 +++++ packages/adapter-node/index.js | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 .changeset/mighty-ears-divide.md diff --git a/.changeset/mighty-ears-divide.md b/.changeset/mighty-ears-divide.md new file mode 100644 index 000000000000..407fea95e68b --- /dev/null +++ b/.changeset/mighty-ears-divide.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-node': patch +--- + +[fix] Correctly treat `middlewares.js` as external when using `entryPoint` option diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index cc2dd47d6fde..ef4dfce45cf1 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -7,7 +7,7 @@ import { statSync, writeFileSync } from 'fs'; -import { join } from 'path'; +import { join, resolve } from 'path'; import { pipeline } from 'stream'; import glob from 'tiny-glob'; import { fileURLToPath } from 'url'; @@ -81,7 +81,6 @@ export default function ({ entryPoints: [entryPoint], outfile: join(out, 'index.js'), bundle: true, - external: ['./middlewares.js'], // does not work, eslint does not exclude middlewares from target format: 'esm', platform: 'node', target: 'node12', @@ -90,8 +89,12 @@ export default function ({ { name: 'fix-middlewares-exclude', setup(build) { - // Match an import called "./middlewares.js" and mark it as external - build.onResolve({ filter: /^\.\/middlewares\.js$/ }, () => ({ external: true })); + // Match an import of "middlewares.js" and mark it as external + build.onResolve({ filter: /\/middlewares\.js$/ }, ({ path, resolveDir }) => { + if (resolve(resolveDir, path) === resolve(out, 'middlewares.js')) { + return { path: './middlewares.js', external: true }; + } + }); } } ]