diff --git a/code/frameworks/html-vite/README.md b/code/frameworks/html-vite/README.md new file mode 100644 index 000000000000..b1d04f7a5d67 --- /dev/null +++ b/code/frameworks/html-vite/README.md @@ -0,0 +1 @@ +# Storybook for HTML diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json new file mode 100644 index 000000000000..1b36174b63d2 --- /dev/null +++ b/code/frameworks/html-vite/package.json @@ -0,0 +1,85 @@ +{ + "name": "@storybook/html-vite", + "version": "7.0.0-alpha.57", + "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", + "keywords": [ + "storybook" + ], + "homepage": "https://github.com/storybookjs/storybook/tree/main/frameworks/html-vite", + "bugs": { + "url": "https://github.com/storybookjs/storybook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/storybookjs/storybook.git", + "directory": "frameworks/html-vite" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "license": "MIT", + "exports": { + ".": { + "require": "./dist/index.js", + "import": "./dist/index.mjs", + "types": "./dist/index.d.ts" + }, + "./preset": { + "require": "./dist/preset.js", + "import": "./dist/preset.mjs", + "types": "./dist/preset.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", + "files": [ + "dist/**/*", + "types/**/*", + "README.md", + "*.js", + "*.d.ts" + ], + "scripts": { + "check": "tsc --noEmit", + "prep": "../../../scripts/prepare/bundle.ts" + }, + "dependencies": { + "@storybook/addons": "7.0.0-alpha.57", + "@storybook/builder-vite": "7.0.0-alpha.57", + "@storybook/channel-postmessage": "7.0.0-alpha.57", + "@storybook/channel-websocket": "7.0.0-alpha.57", + "@storybook/client-api": "7.0.0-alpha.57", + "@storybook/core-server": "7.0.0-alpha.57", + "@storybook/html": "7.0.0-alpha.57", + "@storybook/node-logger": "7.0.0-alpha.57", + "@storybook/preview-web": "7.0.0-alpha.57", + "magic-string": "^0.26.1", + "vite": "3" + }, + "devDependencies": { + "@types/node": "^16.0.0", + "typescript": "~4.6.3", + "vite": "^3.1.0" + }, + "engines": { + "node": "^14.18 || >=16" + }, + "publishConfig": { + "access": "public" + }, + "bundler": { + "entries": [ + "./src/index.ts", + "./src/preset.ts" + ], + "platform": "node" + }, + "gitHead": "c8e9a862bb83c4a0d6b5975e795b4ca7f7ff7bc2" +} diff --git a/code/frameworks/html-vite/preset.js b/code/frameworks/html-vite/preset.js new file mode 100644 index 000000000000..a83f95279e7f --- /dev/null +++ b/code/frameworks/html-vite/preset.js @@ -0,0 +1 @@ +module.exports = require('./dist/preset'); diff --git a/code/frameworks/html-vite/src/index.ts b/code/frameworks/html-vite/src/index.ts new file mode 100644 index 000000000000..d3ded0cdbbb9 --- /dev/null +++ b/code/frameworks/html-vite/src/index.ts @@ -0,0 +1 @@ +export type { StorybookConfig } from '@storybook/builder-vite'; diff --git a/code/frameworks/html-vite/src/preset.ts b/code/frameworks/html-vite/src/preset.ts new file mode 100644 index 000000000000..8e2f55a64687 --- /dev/null +++ b/code/frameworks/html-vite/src/preset.ts @@ -0,0 +1,6 @@ +import type { StorybookConfig } from '@storybook/builder-vite'; + +export const core: StorybookConfig['core'] = { + builder: '@storybook/builder-vite', + renderer: '@storybook/html', +}; diff --git a/code/frameworks/html-vite/tsconfig.json b/code/frameworks/html-vite/tsconfig.json new file mode 100644 index 000000000000..534e4ddd108a --- /dev/null +++ b/code/frameworks/html-vite/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "types": ["node"], + "resolveJsonModule": true + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.*", "src/**/__testfixtures__/**"] +} diff --git a/code/lib/cli/scripts/generate-sb-packages-versions.js b/code/lib/cli/scripts/generate-sb-packages-versions.js index cba52deaca75..14159fbae83c 100755 --- a/code/lib/cli/scripts/generate-sb-packages-versions.js +++ b/code/lib/cli/scripts/generate-sb-packages-versions.js @@ -16,6 +16,8 @@ const run = async () => { if (!semver.valid(updatedVersion)) throw new Error(`Invalid version: ${updatedVersion}`); + logger.log(`Generating versions.ts with v${updatedVersion}`); + const storybookPackagesPaths = await globby( `${rootDirectory}/@(frameworks|addons|lib|renderers|presets)/**/package.json`, { @@ -40,15 +42,19 @@ const run = async () => { .sort((package1, package2) => package1.name.localeCompare(package2.name)) .reduce((acc, { name }) => ({ ...acc, [name]: updatedVersion }), {}); + const versionsPath = path.join(__dirname, '..', 'src', 'versions.ts'); + await writeFile( - path.join(__dirname, '..', 'src', 'versions.ts'), + versionsPath, dedent` // auto generated file, do not edit export default ${JSON.stringify(packageToVersionMap, null, 2)} ` ); - exec(`yarn lint:js:cmd --fix ${path.join(__dirname, '..', 'src', 'versions.ts')}`, { + logger.log(`Updating versions and formatting results at: ${versionsPath}`); + + exec(`yarn lint:js:cmd --fix ${versionsPath}`, { cwd: path.join(__dirname, '..', '..', '..'), }); }; diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts index 8f2382043a37..d0a47b8a5d60 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts @@ -44,6 +44,7 @@ const packagesMap: Record = { }, '@storybook/html': { webpack5: '@storybook/html-webpack5', + vite: '@storybook/html-vite', }, }; diff --git a/code/lib/cli/src/repro-templates.ts b/code/lib/cli/src/repro-templates.ts index fda06425b5b0..50414a568e56 100644 --- a/code/lib/cli/src/repro-templates.ts +++ b/code/lib/cli/src/repro-templates.ts @@ -162,6 +162,28 @@ export const allTemplates: Record = { builder: '@storybook/builder-webpack5', }, }, + 'html-vite/default-js': { + name: 'HTML Vite JS', + script: 'yarn create vite . --template vanilla && echo "export default {}" > vite.config.js', + expected: { + framework: '@storybook/html-vite', + renderer: '@storybook/html', + builder: '@storybook/builder-vite', + }, + // TODO: remove this once html-vite framework is released + inDevelopment: true, + }, + 'html-vite/default-ts': { + name: 'HTML Vite TS', + script: 'yarn create vite . --template vanilla-ts && echo "export default {}" > vite.config.js', + expected: { + framework: '@storybook/html-vite', + renderer: '@storybook/html', + builder: '@storybook/builder-vite', + }, + // TODO: remove this once html-vite framework is released + inDevelopment: true, + }, 'svelte-vite/default-js': { name: 'Svelte Vite (JS)', script: 'yarn create vite . --template svelte', diff --git a/code/lib/cli/src/versions.ts b/code/lib/cli/src/versions.ts index 18c0dfc55f9d..099e94816641 100644 --- a/code/lib/cli/src/versions.ts +++ b/code/lib/cli/src/versions.ts @@ -42,6 +42,7 @@ export default { '@storybook/ember': '7.0.0-alpha.57', '@storybook/html': '7.0.0-alpha.57', '@storybook/html-webpack5': '7.0.0-alpha.57', + '@storybook/html-vite': '7.0.0-alpha.57', '@storybook/instrumenter': '7.0.0-alpha.57', '@storybook/nextjs': '7.0.0-alpha.57', '@storybook/node-logger': '7.0.0-alpha.57', diff --git a/code/package.json b/code/package.json index 5d213f7c57bb..eeb3d2212722 100644 --- a/code/package.json +++ b/code/package.json @@ -191,6 +191,7 @@ "@storybook/ember": "workspace:*", "@storybook/eslint-config-storybook": "^3.1.2", "@storybook/html": "workspace:*", + "@storybook/html-vite": "workspace:*", "@storybook/html-webpack5": "workspace:*", "@storybook/instrumenter": "workspace:*", "@storybook/jest": "^0.0.10", diff --git a/code/workspace.json b/code/workspace.json index c258a3c9aa41..20e7a1073f85 100644 --- a/code/workspace.json +++ b/code/workspace.json @@ -211,6 +211,11 @@ "root": "renderers/html", "type": "library" }, + "@storybook/html-vite": { + "implicitDependencies": [], + "root": "frameworks/html-vite", + "type": "library" + }, "@storybook/html-webpack5": { "implicitDependencies": [], "root": "frameworks/html-webpack5", diff --git a/code/yarn.lock b/code/yarn.lock index c9e794c2770e..118415a861f7 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6416,6 +6416,26 @@ __metadata: languageName: node linkType: hard +"@storybook/html-vite@workspace:*, @storybook/html-vite@workspace:frameworks/html-vite": + version: 0.0.0-use.local + resolution: "@storybook/html-vite@workspace:frameworks/html-vite" + dependencies: + "@storybook/addons": 7.0.0-alpha.57 + "@storybook/builder-vite": 7.0.0-alpha.57 + "@storybook/channel-postmessage": 7.0.0-alpha.57 + "@storybook/channel-websocket": 7.0.0-alpha.57 + "@storybook/client-api": 7.0.0-alpha.57 + "@storybook/core-server": 7.0.0-alpha.57 + "@storybook/html": 7.0.0-alpha.57 + "@storybook/node-logger": 7.0.0-alpha.57 + "@storybook/preview-web": 7.0.0-alpha.57 + "@types/node": ^16.0.0 + magic-string: ^0.26.1 + typescript: ~4.6.3 + vite: ^3.1.0 + languageName: unknown + linkType: soft + "@storybook/html-webpack5@workspace:*, @storybook/html-webpack5@workspace:frameworks/html-webpack5": version: 0.0.0-use.local resolution: "@storybook/html-webpack5@workspace:frameworks/html-webpack5" @@ -6941,7 +6961,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preview-web@workspace:*, @storybook/preview-web@workspace:lib/preview-web": +"@storybook/preview-web@7.0.0-alpha.57, @storybook/preview-web@workspace:*, @storybook/preview-web@workspace:lib/preview-web": version: 0.0.0-use.local resolution: "@storybook/preview-web@workspace:lib/preview-web" dependencies: @@ -7138,6 +7158,7 @@ __metadata: "@storybook/ember": "workspace:*" "@storybook/eslint-config-storybook": ^3.1.2 "@storybook/html": "workspace:*" + "@storybook/html-vite": "workspace:*" "@storybook/html-webpack5": "workspace:*" "@storybook/instrumenter": "workspace:*" "@storybook/jest": ^0.0.10