From dee0619081cdc4103c28d3b88a753aeef95ddd8b Mon Sep 17 00:00:00 2001 From: Eike Foken Date: Mon, 18 Jul 2022 09:53:22 +0200 Subject: [PATCH 1/4] Update `@rollup/plugin-node-resolve` to ^11.2.1 --- packages/cli/package.json | 2 +- packages/cli/src/build/rollup.ts | 4 +--- yarn.lock | 12 ++++++------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 37951cd6..9f2fb729 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -23,7 +23,7 @@ "@rollup/plugin-alias": "^3.1.1", "@rollup/plugin-commonjs": "^15.0.0", "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^9.0.0", + "@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-replace": "^2.4.1", "builtin-modules": "^3.1.0", "chalk": "^4.1.0", diff --git a/packages/cli/src/build/rollup.ts b/packages/cli/src/build/rollup.ts index 9bc243f3..a3f8cb6e 100644 --- a/packages/cli/src/build/rollup.ts +++ b/packages/cli/src/build/rollup.ts @@ -187,9 +187,7 @@ export let getRollupConfig = ( extensions: EXTENSIONS, // only umd builds will actually load dependencies which is where this browser flag actually makes a difference browser: type === "umd", - customResolveOptions: { - moduleDirectory: type === "umd" ? "node_modules" : [], - }, + moduleDirectories: type === "umd" ? ["node_modules"] : [], }), type === "umd" && inlineProcessEnvNodeEnv({ sourceMap: true }), type === "umd" && diff --git a/yarn.lock b/yarn.lock index 8844ae50..aba0cd53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3007,17 +3007,17 @@ dependencies: "@rollup/pluginutils" "^3.0.8" -"@rollup/plugin-node-resolve@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" - integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg== +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" builtin-modules "^3.1.0" deepmerge "^4.2.2" is-module "^1.0.0" - resolve "^1.17.0" + resolve "^1.19.0" "@rollup/plugin-replace@^2.4.1": version "2.4.1" @@ -11412,7 +11412,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.14.2: +resolve@^1.1.6, resolve@^1.14.2, resolve@^1.19.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== From 15e2922f870aa58e4bd97cd53c94bff474a51a6f Mon Sep 17 00:00:00 2001 From: Eike Foken Date: Mon, 18 Jul 2022 09:54:01 +0200 Subject: [PATCH 2/4] Add test --- .../__tests__/__snapshots__/other.ts.snap | 23 ++++++++++++++ packages/cli/src/build/__tests__/other.ts | 31 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap b/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap index 70d2bd71..749cbc1d 100644 --- a/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap +++ b/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap @@ -98,6 +98,29 @@ if (typeof document !== undefined) { export default thing;" `; +exports[`package with exports resolvable: package.json 1`] = ` +Object { + "dependencies": Object { + "@atomico/hooks": "3.43.1", + "atomico": "1.60.0", + }, + "main": "dist/package-exports-resolvable-but-not-in-deps.cjs.js", + "name": "package-exports-resolvable-but-not-in-deps", + "preconstruct": Object { + "umdName": "packageExportsResolvableButNotInDeps", + }, + "umd:main": "dist/package-exports-resolvable-but-not-in-deps.umd.min.js", +} +`; + +exports[`package with exports resolvable: src/index.js 1`] = ` +"import { useSlot } from \\"@atomico/hooks/use-slot\\"; + +export default function useChildren(ref) { + return useSlot(ref); +}" +`; + exports[`should lazily get globals: dist/umd-unused-peer-dep.cjs.dev.js 1`] = ` "'use strict'; diff --git a/packages/cli/src/build/__tests__/other.ts b/packages/cli/src/build/__tests__/other.ts index b5d206d5..7c6b33ae 100644 --- a/packages/cli/src/build/__tests__/other.ts +++ b/packages/cli/src/build/__tests__/other.ts @@ -408,6 +408,37 @@ test("package resolvable but not in deps", async () => { expect(true).toBe(false); }); +test("package with exports resolvable", async () => { + let tmpPath = await testdir({ + "package.json": JSON.stringify({ + name: "package-exports-resolvable-but-not-in-deps", + main: "dist/package-exports-resolvable-but-not-in-deps.cjs.js", + "umd:main": "dist/package-exports-resolvable-but-not-in-deps.umd.min.js", + + preconstruct: { + umdName: "packageExportsResolvableButNotInDeps", + }, + + dependencies: { + "@atomico/hooks": "3.43.1", + atomico: "1.60.0", + }, + }), + + "src/index.js": js` + import { useSlot } from "@atomico/hooks/use-slot"; + + export default function useChildren(ref) { + return useSlot(ref); + } + `, + }); + + await install(tmpPath); + + await snapshotDirectory(tmpPath, { files: "all" }); +}); + test("entrypoint outside package directory", async () => { let tmpPath = await testdir({ "package.json": JSON.stringify({ From 3f37ddc55170b98cce749151e25627bd58b822d6 Mon Sep 17 00:00:00 2001 From: Eike Foken Date: Mon, 18 Jul 2022 09:54:07 +0200 Subject: [PATCH 3/4] Add changeset --- .changeset/tough-ligers-kick.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tough-ligers-kick.md diff --git a/.changeset/tough-ligers-kick.md b/.changeset/tough-ligers-kick.md new file mode 100644 index 00000000..78d0d128 --- /dev/null +++ b/.changeset/tough-ligers-kick.md @@ -0,0 +1,5 @@ +--- +"@preconstruct/cli": patch +--- + +Updated `@rollup/plugin-node-resolve` to `^11.2.1` in order to make direct imports resolveable, e.g. packages that use `exports` in their package.json From 67b95591e1ed38f72de5cbf9aa6310eafdc6545a Mon Sep 17 00:00:00 2001 From: mitchellhamilton Date: Tue, 19 Jul 2022 09:28:43 +1000 Subject: [PATCH 4/4] Update tests to newer style --- .../__tests__/__snapshots__/other.ts.snap | 23 ------------- packages/cli/src/build/__tests__/other.ts | 32 ++++++++++++++----- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap b/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap index 749cbc1d..70d2bd71 100644 --- a/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap +++ b/packages/cli/src/build/__tests__/__snapshots__/other.ts.snap @@ -98,29 +98,6 @@ if (typeof document !== undefined) { export default thing;" `; -exports[`package with exports resolvable: package.json 1`] = ` -Object { - "dependencies": Object { - "@atomico/hooks": "3.43.1", - "atomico": "1.60.0", - }, - "main": "dist/package-exports-resolvable-but-not-in-deps.cjs.js", - "name": "package-exports-resolvable-but-not-in-deps", - "preconstruct": Object { - "umdName": "packageExportsResolvableButNotInDeps", - }, - "umd:main": "dist/package-exports-resolvable-but-not-in-deps.umd.min.js", -} -`; - -exports[`package with exports resolvable: src/index.js 1`] = ` -"import { useSlot } from \\"@atomico/hooks/use-slot\\"; - -export default function useChildren(ref) { - return useSlot(ref); -}" -`; - exports[`should lazily get globals: dist/umd-unused-peer-dep.cjs.dev.js 1`] = ` "'use strict'; diff --git a/packages/cli/src/build/__tests__/other.ts b/packages/cli/src/build/__tests__/other.ts index 7c6b33ae..882a6181 100644 --- a/packages/cli/src/build/__tests__/other.ts +++ b/packages/cli/src/build/__tests__/other.ts @@ -414,17 +414,24 @@ test("package with exports resolvable", async () => { name: "package-exports-resolvable-but-not-in-deps", main: "dist/package-exports-resolvable-but-not-in-deps.cjs.js", "umd:main": "dist/package-exports-resolvable-but-not-in-deps.umd.min.js", - + dependencies: { + "@atomico/hooks": "0.0.0", + }, preconstruct: { umdName: "packageExportsResolvableButNotInDeps", }, - - dependencies: { - "@atomico/hooks": "3.43.1", - atomico: "1.60.0", + }), + "node_modules/@atomico/hooks/package.json": JSON.stringify({ + name: "@atomico/hooks/use-slot", + exports: { + "./use-slot": "./something/use-slot.js", }, }), - + "node_modules/@atomico/hooks/something/use-slot.js": js` + export function useSlot(ref) { + console.log(ref); + } + `, "src/index.js": js` import { useSlot } from "@atomico/hooks/use-slot"; @@ -434,9 +441,18 @@ test("package with exports resolvable", async () => { `, }); - await install(tmpPath); + await build(tmpPath); - await snapshotDirectory(tmpPath, { files: "all" }); + expect( + await getFiles(tmpPath, [ + "dist/package-exports-resolvable-but-not-in-deps.umd.min.js", + ]) + ).toMatchInlineSnapshot(` + ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ dist/package-exports-resolvable-but-not-in-deps.umd.min.js ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ + !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).packageExportsResolvableButNotInDeps=o()}(this,(function(){"use strict";return function(e){return function(e){console.log(e)}(e)}})); + //# sourceMappingURL=package-exports-resolvable-but-not-in-deps.umd.min.js.map + + `); }); test("entrypoint outside package directory", async () => {