1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.link = void 0;
|
7 |
|
8 | require("core-js/modules/es.promise.js");
|
9 |
|
10 | var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
11 |
|
12 | var _path = _interopRequireDefault(require("path"));
|
13 |
|
14 | var _crossSpawn = require("cross-spawn");
|
15 |
|
16 | var _nodeLogger = require("@storybook/node-logger");
|
17 |
|
18 | var _scripts = require("./repro-generators/scripts");
|
19 |
|
20 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21 |
|
22 | const link = async ({
|
23 | target,
|
24 | local
|
25 | }) => {
|
26 | const storybookDir = process.cwd();
|
27 |
|
28 | try {
|
29 | const packageJson = JSON.parse(_fsExtra.default.readFileSync('package.json', 'utf8'));
|
30 | if (packageJson.name !== '@storybook/root') throw new Error();
|
31 | } catch {
|
32 | throw new Error('Expected to run link from the root of the storybook monorepo');
|
33 | }
|
34 |
|
35 | let reproDir = target;
|
36 |
|
37 | let reproName = _path.default.basename(target);
|
38 |
|
39 | if (!local) {
|
40 | const reprosDir = _path.default.join(storybookDir, '../storybook-repros');
|
41 |
|
42 | _nodeLogger.logger.info(`Ensuring directory ${reprosDir}`);
|
43 |
|
44 | _fsExtra.default.ensureDirSync(reprosDir);
|
45 |
|
46 | _nodeLogger.logger.info(`Cloning ${target}`);
|
47 |
|
48 | await (0, _scripts.exec)(`git clone ${target}`, {
|
49 | cwd: reprosDir
|
50 | });
|
51 |
|
52 | reproName = _path.default.basename(target, _path.default.extname(target));
|
53 | reproDir = _path.default.join(reprosDir, reproName);
|
54 | }
|
55 |
|
56 | const version = (0, _crossSpawn.sync)('yarn', ['--version'], {
|
57 | cwd: reproDir,
|
58 | stdio: 'pipe'
|
59 | }).stdout.toString();
|
60 |
|
61 | if (!/^[23]\./.test(version)) {
|
62 | _nodeLogger.logger.warn(`🚨 Expected yarn 2 or 3 in ${reproDir}!`);
|
63 |
|
64 | _nodeLogger.logger.warn('');
|
65 |
|
66 | _nodeLogger.logger.warn('Please set it up with `yarn set version berry`,');
|
67 |
|
68 | _nodeLogger.logger.warn(`then link '${reproDir}' with the '--local' flag.`);
|
69 |
|
70 | return;
|
71 | }
|
72 |
|
73 | _nodeLogger.logger.info(`Linking ${reproDir}`);
|
74 |
|
75 | await (0, _scripts.exec)(`yarn link --all ${storybookDir}`, {
|
76 | cwd: reproDir
|
77 | });
|
78 |
|
79 | _nodeLogger.logger.info(`Installing ${reproName}`);
|
80 |
|
81 | await (0, _scripts.exec)(`yarn install`, {
|
82 | cwd: reproDir
|
83 | });
|
84 |
|
85 | _nodeLogger.logger.info(`Magic stuff related to @storybook/preset-create-react-app, we need to fix peerDependencies`);
|
86 |
|
87 | await (0, _scripts.exec)(`yarn add -D webpack-hot-middleware`, {
|
88 | cwd: reproDir
|
89 | });
|
90 |
|
91 | _nodeLogger.logger.info(`Running ${reproName} storybook`);
|
92 |
|
93 | await (0, _scripts.exec)(`yarn run storybook`, {
|
94 | cwd: reproDir
|
95 | });
|
96 | };
|
97 |
|
98 | exports.link = link; |
\ | No newline at end of file |