@storybook/cli
Version:
Storybook's CLI - easiest method of adding storybook to your projects
78 lines (59 loc) • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("core-js/modules/es.promise.js");
var _path = _interopRequireDefault(require("path"));
var _crossSpawn = require("cross-spawn");
var _codemod = require("@storybook/codemod");
var _helpers = require("../../helpers");
var _jsPackageManager = require("../../js-package-manager");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable no-param-reassign */
async function updatePackage(packageManager, devDependencies, oldName, newName) {
if (devDependencies[oldName]) {
delete devDependencies[oldName];
devDependencies[newName] = await packageManager.getVersion(newName);
}
}
async function updatePackageJson(packageManager, npmOptions) {
const packageJson = packageManager.retrievePackageJson();
const {
devDependencies
} = packageJson;
const [actionsVersion, linksVersion] = await packageManager.getVersions('@storybook/addon-actions', '@storybook/addon-links');
devDependencies['@storybook/addon-actions'] = actionsVersion;
devDependencies['@storybook/addon-links'] = linksVersion;
await Promise.all(Object.keys(_codemod.packageNames).map(oldName => {
const newName = _codemod.packageNames[oldName];
return updatePackage(packageManager, devDependencies, oldName, newName);
}));
if (!devDependencies['@storybook/react'] && !devDependencies['@storybook/react-native']) {
throw new Error('Expected to find `@kadira/[react-native]-storybook` in devDependencies');
}
(0, _jsPackageManager.writePackageJson)(packageJson);
const babelDependencies = await (0, _helpers.getBabelDependencies)(packageManager, packageJson);
if (babelDependencies.length > 0) {
packageManager.addDependencies(Object.assign({}, npmOptions, {
packageJson
}), babelDependencies);
}
}
function updateSourceCode(parser) {
const jscodeshiftPath = _path.default.dirname(require.resolve('jscodeshift'));
const jscodeshiftCommand = _path.default.join(jscodeshiftPath, 'bin', 'jscodeshift.sh');
['update-organisation-name.js', 'move-builtin-addons.js'].forEach(codemod => {
const codemodPath = _path.default.join(_path.default.dirname(require.resolve('@storybook/codemod')), 'transforms', codemod);
const args = ['-t', codemodPath, '--silent', '--ignore-pattern', '"node_modules|dist"', '.'];
if (parser) args.push('--parser', parser);
(0, _crossSpawn.sync)(jscodeshiftCommand, args, {
stdio: 'inherit'
});
});
}
var _default = async (packageManager, parser, npmOptions) => {
await updatePackageJson(packageManager, npmOptions);
updateSourceCode(parser);
};
exports.default = _default;