Skip to content

Commit 702b539

Browse files
committed
revert: feat: load config w/ cosmiconfig
This reverts commit 5288122.
1 parent 9a07eeb commit 702b539

File tree

3 files changed

+42
-30
lines changed

3 files changed

+42
-30
lines changed

packages/@vue/cli-service/__tests__/Service.spec.js

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
jest.mock('fs')
2+
jest.mock('mock-config', () => ({ lintOnSave: false }), { virtual: true })
23
jest.mock('vue-cli-plugin-foo', () => () => {}, { virtual: true })
34

45
const fs = require('fs')
@@ -52,24 +53,16 @@ test('load project options from package.json', () => {
5253
})
5354

5455
test('load project options from vue.config.js', () => {
55-
fs.writeFileSync('/vue.config.js', `module.exports=${JSON.stringify({ lintOnSave: false })}`)
56-
const service = createMockService()
57-
// vue.config.js has higher priority
58-
expect(service.projectOptions.lintOnSave).toBe(false)
59-
fs.unlinkSync('/vue.config.js')
60-
})
61-
62-
test('package.json option should take priority', () => {
63-
fs.writeFileSync('/vue.config.js', `module.exports=${JSON.stringify({ lintOnSave: false })}`)
56+
process.env.VUE_CLI_SERVICE_CONFIG_PATH = 'mock-config'
6457
mockPkg({
6558
vue: {
6659
lintOnSave: true
6760
}
6861
})
6962
const service = createMockService()
70-
// package.json has higher priority
71-
expect(service.projectOptions.lintOnSave).toBe(true)
72-
fs.unlinkSync('/vue.config.js')
63+
// vue.config.js has higher priority
64+
expect(service.projectOptions.lintOnSave).toBe(false)
65+
delete process.env.VUE_CLI_SERVICE_CONFIG_PATH
7366
})
7467

7568
test('api: setMode', () => {

packages/@vue/cli-service/lib/Service.js

+37-17
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
const fs = require('fs')
22
const path = require('path')
33
const debug = require('debug')
4+
const chalk = require('chalk')
45
const readPkg = require('read-pkg')
56
const merge = require('webpack-merge')
67
const deepMerge = require('deepmerge')
78
const Config = require('webpack-chain')
89
const PluginAPI = require('./PluginAPI')
910
const loadEnv = require('./util/loadEnv')
10-
const cosmiconfig = require('cosmiconfig')
11-
const { error } = require('@vue/cli-shared-utils')
11+
const { warn, error } = require('@vue/cli-shared-utils')
1212

1313
const { defaults, validate } = require('./options')
1414

@@ -155,25 +155,45 @@ module.exports = class Service {
155155
}
156156

157157
loadProjectOptions (inlineOptions) {
158-
let resolved
159-
if (this.pkg.vue) {
160-
resolved = this.pkg.vue
161-
} else {
162-
const explorer = cosmiconfig('vue', {
163-
rc: false,
164-
sync: true,
165-
stopDir: this.context
166-
})
167-
try {
168-
const res = explorer.load(this.context)
169-
if (res) resolved = res.config
170-
} catch (e) {
158+
// vue.config.js
159+
let fileConfig, pkgConfig, resolved
160+
const configPath = (
161+
process.env.VUE_CLI_SERVICE_CONFIG_PATH ||
162+
path.resolve(this.context, 'vue.config.js')
163+
)
164+
try {
165+
fileConfig = require(configPath)
166+
if (!fileConfig || typeof fileConfig !== 'object') {
171167
error(
172-
`Error loading vue-cli config: ${e.message}`
168+
`Error loading ${chalk.bold('vue.config.js')}: should export an object.`
169+
)
170+
fileConfig = null
171+
}
172+
} catch (e) {}
173+
174+
// package.vue
175+
pkgConfig = this.pkg.vue
176+
if (pkgConfig && typeof pkgConfig !== 'object') {
177+
error(
178+
`Error loading vue-cli config in ${chalk.bold(`package.json`)}: ` +
179+
`the "vue" field should be an object.`
180+
)
181+
pkgConfig = null
182+
}
183+
184+
if (fileConfig) {
185+
if (pkgConfig) {
186+
warn(
187+
`"vue" field in ${chalk.bold(`package.json`)} ignored ` +
188+
`due to presence of ${chalk.bold('vue.config.js')}.`
173189
)
174190
}
191+
resolved = fileConfig
192+
} else if (pkgConfig) {
193+
resolved = pkgConfig
194+
} else {
195+
resolved = inlineOptions || {}
175196
}
176-
resolved = resolved || inlineOptions || {}
177197

178198
// normlaize some options
179199
ensureSlash(resolved, 'base')

packages/@vue/cli-service/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
"case-sensitive-paths-webpack-plugin": "^2.1.1",
3232
"chalk": "^2.3.0",
3333
"copy-webpack-plugin": "^4.3.1",
34-
"cosmiconfig": "^4.0.0",
3534
"css-loader": "^0.28.9",
3635
"deepmerge": "^2.0.1",
3736
"escape-string-regexp": "^1.0.5",

0 commit comments

Comments
 (0)