UNPKG

create-nextjs-storybook

Version:

Install embedded Storybook route into a NextJS project

49 lines (48 loc) 2.39 kB
import fs from 'fs'; import { findUpSync } from 'find-up'; import semver from 'semver'; import { resolve } from 'path'; const logger = console; export var SupportedLanguage; (function (SupportedLanguage) { SupportedLanguage["JAVASCRIPT"] = "javascript"; SupportedLanguage["TYPESCRIPT_3_8"] = "typescript-3-8"; SupportedLanguage["TYPESCRIPT_4_9"] = "typescript-4-9"; })(SupportedLanguage || (SupportedLanguage = {})); export function isStorybookInstantiated(configDir = resolve(process.cwd(), '.storybook')) { return fs.existsSync(configDir); } export async function detectPnp() { return !!findUpSync(['.pnp.js', '.pnp.cjs']); } export async function detectLanguage(packageManager) { let language = SupportedLanguage.JAVASCRIPT; if (fs.existsSync('jsconfig.json')) { return language; } const isTypescriptDirectDependency = await packageManager .getAllDependencies() .then((deps) => Boolean(deps['typescript'])); const typescriptVersion = await packageManager.getPackageVersion('typescript'); const prettierVersion = await packageManager.getPackageVersion('prettier'); const babelPluginTransformTypescriptVersion = await packageManager.getPackageVersion('@babel/plugin-transform-typescript'); const typescriptEslintParserVersion = await packageManager.getPackageVersion('@typescript-eslint/parser'); const eslintPluginStorybookVersion = await packageManager.getPackageVersion('eslint-plugin-storybook'); if (isTypescriptDirectDependency && typescriptVersion) { if (semver.gte(typescriptVersion, '4.9.0') && (!prettierVersion || semver.gte(prettierVersion, '2.8.0')) && (!babelPluginTransformTypescriptVersion || semver.gte(babelPluginTransformTypescriptVersion, '7.20.0')) && (!typescriptEslintParserVersion || semver.gte(typescriptEslintParserVersion, '5.44.0')) && (!eslintPluginStorybookVersion || semver.gte(eslintPluginStorybookVersion, '0.6.8'))) { language = SupportedLanguage.TYPESCRIPT_4_9; } else if (semver.gte(typescriptVersion, '3.8.0')) { language = SupportedLanguage.TYPESCRIPT_3_8; } else if (semver.lt(typescriptVersion, '3.8.0')) { logger.warn('Detected TypeScript < 3.8, populating with JavaScript examples'); } } return language; }