Merge pull request #19045 from storybookjs/tom/sb-697-investigate-chromatic-issues-on-next

Core: Restore `/preview` etc package exports; return unresolved path from presets.
This commit is contained in:
Michael Shilman 2022-08-31 10:19:21 +08:00 committed by GitHub
commit 541f40db03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 111 additions and 34 deletions

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"
@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -1,5 +1,6 @@
import { dedent } from 'ts-dedent';
import { logger } from '@storybook/node-logger';
import { dirname } from 'path';
import {
CLIOptions,
LoadedPreset,
@ -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))?$/)) {
@ -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 {

View File

@ -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"

View File

@ -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"

View File

@ -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",

View File

@ -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"

View File

@ -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",

View File

@ -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"

View File

@ -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",

View File

@ -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"