@storybook/cli
Version:
Storybook's CLI - easiest method of adding storybook to your projects
57 lines (42 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("core-js/modules/es.promise.js");
var _chalk = _interopRequireDefault(require("chalk"));
var _shelljs = _interopRequireDefault(require("shelljs"));
var _helpers = require("../../helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const generator = async (packageManager, npmOptions, installServer) => {
// set correct project name on entry files if possible
const dirname = _shelljs.default.ls('-d', 'ios/*.xcodeproj').stdout; // Only notify about app name if running in React Native vanilla (Expo projects do not have ios directory)
if (dirname) {
const projectName = dirname.slice('ios/'.length, dirname.length - '.xcodeproj'.length - 1);
if (projectName) {
_shelljs.default.sed('-i', '%APP_NAME%', projectName, 'storybook/index.js');
} else {
(0, _helpers.paddedLog)(_chalk.default.red('ERR: Could not determine project name, to fix: https://github.com/storybookjs/storybook/issues/1277'));
}
}
const packageJson = packageManager.retrievePackageJson();
const missingReactDom = !packageJson.dependencies['react-dom'] && !packageJson.devDependencies['react-dom'];
const reactVersion = packageJson.dependencies.react; // should resolve to latest 5.3 version, this is required until react-native storybook supports v6
const webAddonsV5 = ['@storybook/addon-links@^5.3', '@storybook/addon-knobs@^5.3', '@storybook/addon-actions@^5.3'];
const nativeAddons = ['@storybook/addon-ondevice-knobs', '@storybook/addon-ondevice-actions'];
const packagesToResolve = [...nativeAddons, '@storybook/react-native', installServer && '@storybook/react-native-server'].filter(Boolean);
const resolvedPackages = await packageManager.getVersionedPackages(...packagesToResolve);
const babelDependencies = await (0, _helpers.getBabelDependencies)(packageManager, packageJson);
const packages = [...babelDependencies, ...resolvedPackages, ...webAddonsV5, missingReactDom && reactVersion && `react-dom@${reactVersion}`].filter(Boolean);
packageManager.addDependencies(Object.assign({}, npmOptions, {
packageJson
}), packages);
if (installServer) {
packageManager.addStorybookCommandInScripts({
port: 7007
});
}
(0, _helpers.copyTemplate)(__dirname);
};
var _default = generator;
exports.default = _default;