mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-01-17 21:00:03 -06:00
It has become a common source of mistakes. For example, during PR #4363 I've referred to the wrong `options` several times due to the variable shadowing.
87 lines
2.0 KiB
JavaScript
87 lines
2.0 KiB
JavaScript
const fs = require('fs-extra')
|
|
const path = require('path')
|
|
const homedir = require('os').homedir()
|
|
const { get, set, unset, error, launch } = require('@vue/cli-shared-utils')
|
|
|
|
async function configure (value, options) {
|
|
const file = path.resolve(homedir, '.vuerc')
|
|
const config = await fs.readJson(file)
|
|
|
|
if (!options.delete && !options.get && !options.edit && !options.set) {
|
|
if (options.json) {
|
|
console.log(JSON.stringify({
|
|
resolvedPath: file,
|
|
content: config
|
|
}))
|
|
} else {
|
|
console.log('Resolved path: ' + file + '\n', JSON.stringify(config, null, 2))
|
|
}
|
|
}
|
|
|
|
if (options.get) {
|
|
// eslint-disable-next-line no-shadow
|
|
const value = get(config, options.get)
|
|
if (options.json) {
|
|
console.log(JSON.stringify({
|
|
value
|
|
}))
|
|
} else {
|
|
console.log(value)
|
|
}
|
|
}
|
|
|
|
if (options.delete) {
|
|
unset(config, options.delete)
|
|
await fs.writeFile(file, JSON.stringify(config, null, 2), 'utf-8')
|
|
if (options.json) {
|
|
console.log(JSON.stringify({
|
|
deleted: options.delete
|
|
}))
|
|
} else {
|
|
console.log(`You have removed the option: ${options.delete}`)
|
|
}
|
|
}
|
|
|
|
if (options.edit) {
|
|
launch(file)
|
|
}
|
|
|
|
if (options.set && !value) {
|
|
throw new Error(`Make sure you define a value for the option ${options.set}`)
|
|
}
|
|
|
|
if (options.set && value) {
|
|
set(config, options.set, value)
|
|
|
|
if (value.match('[0-9]')) {
|
|
set(config, options.set, parseInt(value))
|
|
}
|
|
|
|
if (value === 'true') {
|
|
set(config, options.set, true)
|
|
}
|
|
|
|
if (value === 'false') {
|
|
set(config, options.set, false)
|
|
}
|
|
|
|
await fs.writeFile(file, JSON.stringify(config, null, 2), 'utf-8')
|
|
if (options.json) {
|
|
console.log(JSON.stringify({
|
|
updated: options.set
|
|
}))
|
|
} else {
|
|
console.log(`You have updated the option: ${options.set} to ${value}`)
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = (...args) => {
|
|
return configure(...args).catch(err => {
|
|
error(err)
|
|
if (!process.env.VUE_CLI_TEST) {
|
|
process.exit(1)
|
|
}
|
|
})
|
|
}
|