UNPKG

1.33 kBJavaScriptView Raw
1'use strict'
2
3const debug = require('debug')('elint:utils:writePackageJson')
4const path = require('path')
5const fs = require('fs-extra')
6const lodash = require('lodash')
7const writeJsonFile = require('write-json-file')
8const sort = require('./sort-object')
9const { getBaseDir } = require('../env')
10
11/**
12 * 将 devDependencies 写入 package.json
13 *
14 * @param {object} devDependencies 待写入的 devDependencies
15 * @returns {Promise} Promise
16 */
17function writePackageJson (devDependencies) {
18 debug('input devDependencies: %o', devDependencies)
19
20 if (!lodash.isPlainObject(devDependencies)) {
21 debug('devDependencies isn\'t plain object, return')
22 // 不报错
23 return Promise.resolve()
24 }
25
26 const baseDir = getBaseDir()
27 const pkgPath = path.join(baseDir, 'package.json')
28
29 debug(`package.json: ${pkgPath}`)
30
31 if (!fs.existsSync(pkgPath)) {
32 debug(`file not exists: ${pkgPath}, return`)
33 return Promise.resolve()
34 }
35
36 let content
37
38 try {
39 content = JSON.parse(fs.readFileSync(pkgPath))
40 } catch (error) {
41 debug('parse package.json error')
42 return Promise.resolve()
43 }
44
45 content.devDependencies = sort(Object.assign(
46 {},
47 content.devDependencies || {},
48 devDependencies
49 ))
50
51 return writeJsonFile(pkgPath, content, {
52 detectIndent: true
53 })
54}
55
56module.exports = writePackageJson