1 | import { resolve, basename } from 'path';
|
2 | import { red, yellow } from 'kleur';
|
3 | import { readFile, stderr, safeVariableName } from '../utils';
|
4 |
|
5 |
|
6 | export async function getConfigFromPkgJson(cwd) {
|
7 | let hasPackageJson = false;
|
8 | let pkg;
|
9 | try {
|
10 | const packageJson = await readFile(resolve(cwd, 'package.json'), 'utf8');
|
11 | pkg = JSON.parse(packageJson);
|
12 | hasPackageJson = true;
|
13 | } catch (err) {
|
14 | const pkgName = basename(cwd);
|
15 |
|
16 | stderr(
|
17 | yellow().inverse('WARN'),
|
18 | yellow(` no package.json, assuming package name is "${pkgName}".`),
|
19 | );
|
20 |
|
21 | let msg = String(err.message || err);
|
22 | if (!msg.match(/ENOENT/)) stderr(` ${red().dim(msg)}`);
|
23 |
|
24 | pkg = { name: pkgName };
|
25 | }
|
26 |
|
27 | return { hasPackageJson, pkg };
|
28 | }
|
29 | export function getName({ name, pkgName, amdName, cwd, hasPackageJson }) {
|
30 | if (!pkgName) {
|
31 | pkgName = basename(cwd);
|
32 | if (hasPackageJson) {
|
33 | stderr(
|
34 | yellow().inverse('WARN'),
|
35 | yellow(` missing package.json "name" field. Assuming "${pkgName}".`),
|
36 | );
|
37 | }
|
38 | }
|
39 |
|
40 | const finalName = name || amdName || safeVariableName(pkgName);
|
41 |
|
42 | return { finalName, pkgName };
|
43 | }
|