Skip to content

Commit

Permalink
Merge pull request #19045 from storybookjs/tom/sb-697-investigate-chr…
Browse files Browse the repository at this point in the history
…omatic-issues-on-next

Core: Restore `/preview` etc package exports; return unresolved path from presets.
  • Loading branch information
shilman authored Aug 31, 2022
2 parents b63d349 + 2e50d63 commit 541f40d
Show file tree
Hide file tree
Showing 18 changed files with 111 additions and 34 deletions.
6 changes: 3 additions & 3 deletions code/addons/a11y/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/preview.js",
"import": "./dist/preview.mjs",
"types": "./dist/preview.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
6 changes: 3 additions & 3 deletions code/addons/backgrounds/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/preview.js",
"import": "./dist/preview.mjs",
"types": "./dist/preview.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
4 changes: 2 additions & 2 deletions code/addons/controls/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
4 changes: 2 additions & 2 deletions code/addons/jest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
6 changes: 3 additions & 3 deletions code/addons/links/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/preview.js",
"import": "./dist/preview.mjs",
"types": "./dist/preview.d.ts"
Expand All @@ -42,7 +42,7 @@
"import": "./dist/react/index.mjs",
"types": "./dist/react.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
6 changes: 3 additions & 3 deletions code/addons/measure/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,17 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/preview.js",
"import": "./dist/preview.mjs",
"types": "./dist/preview.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
6 changes: 3 additions & 3 deletions code/addons/outline/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,17 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/preset/preview.js",
"import": "./dist/preset/preview.mjs",
"types": "./dist/preview.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
4 changes: 2 additions & 2 deletions code/addons/toolbars/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./manager.js": {
"./manager": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
2 changes: 1 addition & 1 deletion code/addons/viewport/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"import": "./dist/preview.mjs",
"types": "./dist/preview.d.ts"
},
"./register.js": {
"./register": {
"require": "./dist/manager.js",
"import": "./dist/manager.mjs",
"types": "./dist/manager.d.ts"
Expand Down
37 changes: 30 additions & 7 deletions code/lib/core-common/src/presets.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { dedent } from 'ts-dedent';
import { logger } from '@storybook/node-logger';
import { dirname } from 'path';
import {
CLIOptions,
LoadedPreset,
Expand Down Expand Up @@ -71,8 +72,8 @@ export const resolveAddonName = (
name: string,
options: any
): ResolvedAddonPreset | ResolvedAddonVirtual | undefined => {
const r = name.startsWith('/') ? safeResolve : safeResolveFrom.bind(null, configDir);
const resolved = r(name);
const resolve = name.startsWith('/') ? safeResolve : safeResolveFrom.bind(null, configDir);
const resolved = resolve(name);

if (resolved) {
if (name.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
Expand All @@ -90,13 +91,35 @@ export const resolveAddonName = (
}
}

const absolutePackageJson = resolved && resolve(`${name}/package.json`);

// We want to absolutize the package name part to a path on disk
// (i.e. '/Users/foo/.../node_modules/@addons/foo') as otherwise
// we may not be able to import the package in certain module systems (eg. pnpm, yarn pnp)
const absoluteDir = absolutePackageJson && dirname(absolutePackageJson);

// If the package has an export (e.g. `/preview`), absolutize it, eg. to
// /Users/foo/.../node_modules/@addons/foo/preview
// NOTE: this looks like the path of an absolute file, but it DOES NOT exist.
// - However it is importable by webpack.
// - Vite needs to strip off the absolute part to import it though
// (vite cannot import absolute files: https://github.com/vitejs/vite/issues/5494
// this also means vite suffers issues with pnpm etc)
const absolutizeExport = (exportName: string) => {
if (resolve(`${name}${exportName}`)) return `${absoluteDir}${exportName}`;
return undefined;
};

const path = name;

// when user provides full path, we don't need to do anything!
const managerFile = r(`${path}/manager`);
const registerFile = r(`${path}/register`) || r(`${path}/register-panel`);
const previewFile = r(`${path}/preview`);
const presetFile = r(`${path}/preset`);
// We don't want to resolve an import path (e.g. '@addons/foo/preview') to the file on disk,
// because you are not allowed to import arbitrary files in packages in Vite.
// Instead we check if the export exists and "absolutize" it.
const managerFile = absolutizeExport(`/manager`);
const registerFile = absolutizeExport(`/register`) || absolutizeExport(`/register-panel`);
const previewFile = absolutizeExport(`/preview`);
// Presets are imported by node, so therefore fine to be a path on disk (at this stage anyway)
const presetFile = resolve(`${path}/preset`);

if (!(managerFile || previewFile) && presetFile) {
return {
Expand Down
2 changes: 1 addition & 1 deletion code/renderers/html/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
Expand Down
2 changes: 1 addition & 1 deletion code/renderers/preact/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
Expand Down
17 changes: 17 additions & 0 deletions code/renderers/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,23 @@
"url": "https://opencollective.com/storybook"
},
"license": "MIT",
"exports": {
".": {
"require": "./dist/index.js",
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
},
"./package.json": {
"require": "./package.json",
"import": "./package.json",
"types": "./package.json"
}
},
"main": "dist/index.js",
"module": "dist/index.mjs",
"types": "dist/index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion code/renderers/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
Expand Down
20 changes: 20 additions & 0 deletions code/renderers/svelte/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,26 @@
"url": "https://opencollective.com/storybook"
},
"license": "MIT",
"exports": {
".": {
"require": "./dist/index.js",
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
},
"./package.json": {
"require": "./package.json",
"import": "./package.json",
"types": "./package.json"
},
"./templates/HOC.svelte": "./templates/HOC.svelte",
"./templates/PreviewRender.svelte": "./templates/PreviewRender.svelte",
"./templates/SlotDecorator.svelte": "./templates/SlotDecorator.svelte"
},
"main": "dist/index.js",
"module": "dist/index.mjs",
"types": "dist/index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion code/renderers/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
Expand Down
17 changes: 17 additions & 0 deletions code/renderers/vue3/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,23 @@
"url": "https://opencollective.com/storybook"
},
"license": "MIT",
"exports": {
".": {
"require": "./dist/index.js",
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
},
"./package.json": {
"require": "./package.json",
"import": "./package.json",
"types": "./package.json"
}
},
"main": "dist/index.js",
"module": "dist/index.mjs",
"types": "dist/index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion code/renderers/web-components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./preview.js": {
"./preview": {
"require": "./dist/config.js",
"import": "./dist/config.mjs",
"types": "./dist/config.d.ts"
Expand Down

0 comments on commit 541f40d

Please sign in to comment.