UNPKG

1.64 kBJavaScriptView Raw
1const path = require('path')
2
3function atLeastOne (input) {
4 if (input.length === 0) {
5 return 'please choose at least one option'
6 }
7 return true
8}
9
10/* app generator specific utilities */
11
12function guessProjectName (generator) {
13 const packagejsonPath = generator.destinationPath('package.json')
14 return (generator.fs.exists(packagejsonPath) && generator.fs.readJSON('package.json').name) || path.basename(process.cwd())
15}
16
17function readPackageJson (generator) {
18 const packagejsonPath = generator.destinationPath('package.json')
19 return generator.fs.readJSON(packagejsonPath) || {}
20}
21
22function writePackageJson (generator, content) {
23 const packagejsonPath = generator.destinationPath('package.json')
24 return generator.fs.writeJSON(packagejsonPath, content || {})
25}
26
27function addDependencies (generator, deps, dev = false) {
28 const content = readPackageJson(generator)
29 const key = dev ? 'devDependencies' : 'dependencies'
30 content[key] = { ...content[key], ...deps }
31 writePackageJson(generator, content)
32}
33
34function addPkgScript (generator, scripts) {
35 const content = readPackageJson(generator)
36 content.scripts = { ...content.scripts, ...scripts }
37 writePackageJson(generator, content)
38}
39
40function appendOrWrite (generator, file, content, filter) {
41 if (generator.fs.exists(file)) {
42 // do not write if already there
43 return !(filter && generator.fs.read(file).includes(filter)) && generator.fs.append(file, content)
44 }
45 return generator.fs.write(file, content)
46}
47
48module.exports = {
49 atLeastOne,
50 guessProjectName,
51 addDependencies,
52 appendOrWrite,
53 addPkgScript,
54 readPackageJson,
55 writePackageJson
56}