/
checkPackageJson.js
36 lines (29 loc) · 1.11 KB
/
checkPackageJson.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { writeFile } from 'jsonfile';
import { confirm } from 'node-ask';
import addedScript from '../ui/messages/info/addedScript';
import notAddedScript from '../ui/messages/info/notAddedScript';
import scriptNotFound from '../ui/messages/warnings/scriptNotFound';
const scriptName = 'chromatic';
const findScript = (scripts) =>
scripts[scriptName] || Object.values(scripts).find((cmd) => cmd.startsWith(scriptName));
export default async function checkPackageJson({ log, options, packageJson, packagePath }) {
if (!options.interactive) return;
try {
const json = { ...packageJson };
if (!json.scripts) json.scripts = {};
if (findScript(json.scripts)) return;
const scriptCommand = `npx chromatic ${options.originalArgv.join(' ')}`;
log.info('');
if (await confirm(scriptNotFound(scriptName))) {
json.scripts[scriptName] = scriptCommand;
await writeFile(packagePath, json, { spaces: 2 });
log.info('');
log.info(addedScript(scriptName));
} else {
log.info('');
log.info(notAddedScript(scriptName, scriptCommand));
}
} catch (e) {
log.warn(e);
}
}