UNPKG

@storybook/cli

Version:

Storybook's CLI - easiest method of adding storybook to your projects

94 lines (74 loc) 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getStorybookInfo = void 0; var _path = _interopRequireDefault(require("path")); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _getStorybookConfiguration = require("./getStorybookConfiguration"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const viewLayers = { '@storybook/react': 'react', '@storybook/vue': 'vue', '@storybook/vue3': 'vue3', '@storybook/angular': 'angular', '@storybook/html': 'html', '@storybook/web-components': 'web-components', '@storybook/polymer': 'polymer', '@storybook/ember': 'ember', '@storybook/marko': 'marko', '@storybook/mithril': 'mithril', '@storybook/riot': 'riot', '@storybook/svelte': 'svelte', '@storybook/preact': 'preact', '@storybook/rax': 'rax' }; const logger = console; const findDependency = ({ dependencies, devDependencies, peerDependencies }, predicate) => [Object.entries(dependencies || {}).find(predicate), Object.entries(devDependencies || {}).find(predicate), Object.entries(peerDependencies || {}).find(predicate)]; const getFrameworkInfo = packageJson => { // Pull the viewlayer from dependencies in package.json const [dep, devDep, peerDep] = findDependency(packageJson, ([key]) => viewLayers[key]); const [pkg, version] = dep || devDep || peerDep || []; const framework = viewLayers[pkg]; if (dep && devDep && dep[0] === devDep[0]) { logger.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`); } if (dep && peerDep && dep[0] === peerDep[0]) { logger.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`); } return { framework, version }; }; const validConfigExtensions = ['ts', 'js', 'tsx', 'jsx', 'mjs', 'cjs']; const findConfigFile = (prefix, configDir) => { const filePrefix = _path.default.join(configDir, prefix); const extension = validConfigExtensions.find(ext => _fsExtra.default.existsSync(`${filePrefix}.${ext}`)); return extension ? `${filePrefix}.${extension}` : null; }; const getConfigInfo = packageJson => { var _packageJson$scripts; let configDir = '.storybook'; const storybookScript = (_packageJson$scripts = packageJson.scripts) === null || _packageJson$scripts === void 0 ? void 0 : _packageJson$scripts.storybook; if (storybookScript) { const configParam = (0, _getStorybookConfiguration.getStorybookConfiguration)(storybookScript, '-c', '--config-dir'); if (configParam) configDir = configParam; } return { configDir, mainConfig: findConfigFile('main', configDir), previewConfig: findConfigFile('preview', configDir), managerConfig: findConfigFile('manager', configDir) }; }; const getStorybookInfo = packageJson => { const frameworkInfo = getFrameworkInfo(packageJson); const configInfo = getConfigInfo(packageJson); return Object.assign({}, frameworkInfo, configInfo); }; exports.getStorybookInfo = getStorybookInfo;