Skip to content

Commit 7814a35

Browse files
committed
install state with parcel-bundler-storybook local
1 parent a61591d commit 7814a35

File tree

22 files changed

+1465
-374
lines changed

22 files changed

+1465
-374
lines changed

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,9 @@
263263
"alias": {
264264
"@storybook/react-dom-shim": "@storybook/react-dom-shim/dist/react-18"
265265
},
266+
"@parcel/resolver-default": {
267+
"packageExports": true
268+
},
266269
"@parcel/bundler-default": {
267270
"manualSharedBundles": [
268271
{
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "@parcel/config-storybook",
3+
"version": "0.0.2",
4+
"main": "storybook-config.json",
5+
"engines": {
6+
"parcel": "^2.8.0"
7+
},
8+
"publishConfig": {
9+
"access": "public"
10+
},
11+
"dependencies": {
12+
"@parcel/config-default": "^2.13.1",
13+
"@parcel/core": "^2.13.1",
14+
"@parcel/resolver-storybook": "^0.0.0",
15+
"@parcel/transformer-js": "^2.13.1",
16+
"@parcel/transformer-react-refresh-wrap": "^2.13.1",
17+
"@parcel/transformer-storybook": "^0.0.2"
18+
},
19+
"scripts": {
20+
"build": "true",
21+
"clean": "true"
22+
}
23+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"extends": "@parcel/config-default",
3+
"resolvers": ["@parcel/resolver-storybook", "..."],
4+
"transformers": {
5+
"story:*": ["..."],
6+
"*.stories.{ts,tsx,js,mjs,jsm,jsx,es6,cjs}": [
7+
"@parcel/transformer-storybook",
8+
"@parcel/transformer-js"
9+
],
10+
"*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [
11+
"@parcel/transformer-js",
12+
"@parcel/transformer-react-refresh-wrap"
13+
]
14+
}
15+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import path from 'path';
2+
import { Resolver } from "@parcel/plugin";
3+
const reactVersion = require("react-dom/package.json").version;
4+
import { default as NodeResolver } from "@parcel/node-resolver-core";
5+
// @ts-ignore
6+
import { isGlob, glob, normalizeSeparators, relativePath } from '@parcel/utils';
7+
8+
const REACT_MAJOR_VERSION = parseInt(reactVersion.split('.')[0], 10);
9+
10+
module.exports = new Resolver({
11+
async resolve({ dependency, options, specifier, pipeline, logger }) {
12+
// Workaround for interop issue
13+
if (specifier === "react-dom/client" && REACT_MAJOR_VERSION < 18) {
14+
return {
15+
filePath: __dirname + "/react.js",
16+
code: `
17+
export * from 'react-dom';
18+
export * as default from 'react-dom'
19+
`,
20+
};
21+
}
22+
23+
// Resolve story entry globs. Storybook expects an object with relative paths from the process cwd as keys.
24+
// We do this in a resolver so that it invalidates the watcher when new stories are created.
25+
if (pipeline === 'story') {
26+
let sourceFile = dependency.resolveFrom ?? dependency.sourcePath!;
27+
let normalized = normalizeSeparators(path.resolve(path.dirname(sourceFile), atob(specifier)));
28+
let files = await glob(normalized, options.inputFS, {
29+
onlyFiles: true,
30+
});
31+
32+
let cwd = process.cwd();
33+
let dir = path.dirname(sourceFile);
34+
let results = files.map(file => {
35+
let key = relativePath(cwd, file);
36+
let relative = relativePath(dir, file);
37+
return ` ${JSON.stringify(key)}: () => import(${JSON.stringify(relative)}),\n`;
38+
});
39+
40+
return {
41+
filePath: path.join(
42+
dir,
43+
'stories.js'
44+
),
45+
code: `module.exports = {\n${results.join('\n')}\n};\n`,
46+
invalidateOnFileCreate: [
47+
{glob: normalized}
48+
],
49+
pipeline: null,
50+
priority: 'sync',
51+
};
52+
}
53+
},
54+
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require('./StorybookResolver.ts');
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "@parcel/resolver-storybook",
3+
"version": "0.0.0",
4+
"main": "dist/StorybookResolver.js",
5+
"source": "StorybookResolver.ts",
6+
"publishConfig": {
7+
"access": "public"
8+
},
9+
"engines": {
10+
"parcel": "^2.8.0"
11+
},
12+
"dependencies": {
13+
"@parcel/core": "^2.13.1",
14+
"@parcel/node-resolver-core": "^3.1.2",
15+
"@parcel/plugin": "^2.10.2"
16+
},
17+
"scripts": {
18+
"build": "rm -rf dist && swc . -d dist --config-file ../../.swcrc",
19+
"clean": "rm -rf dist"
20+
}
21+
}

0 commit comments

Comments
 (0)