mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-04-22 04:18:33 -05:00
sort package.json fields
This commit is contained in:
@@ -3,6 +3,7 @@ const path = require('path')
|
||||
const debug = require('debug')
|
||||
const resolve = require('resolve')
|
||||
const GeneratorAPI = require('./GeneratorAPI')
|
||||
const sortObject = require('./util/sortObject')
|
||||
const writeFileTree = require('./util/writeFileTree')
|
||||
|
||||
module.exports = class Generator {
|
||||
@@ -30,21 +31,39 @@ module.exports = class Generator {
|
||||
// wait for file resolve
|
||||
await this.resolveFiles()
|
||||
// set package.json
|
||||
this.resolvePkg()
|
||||
this.sortPkg()
|
||||
this.files['package.json'] = JSON.stringify(this.pkg, null, 2)
|
||||
// write file tree to disk
|
||||
await writeFileTree(this.context, this.files)
|
||||
}
|
||||
|
||||
resolvePkg () {
|
||||
const sortDeps = deps => Object.keys(deps).sort().reduce((res, name) => {
|
||||
res[name] = deps[name]
|
||||
return res
|
||||
}, {})
|
||||
this.pkg.dependencies = sortDeps(this.pkg.dependencies)
|
||||
this.pkg.devDependencies = sortDeps(this.pkg.devDependencies)
|
||||
|
||||
// TODO sort pkg keys
|
||||
sortPkg () {
|
||||
// ensure package.json keys has readable order
|
||||
this.pkg.dependencies = sortObject(this.pkg.dependencies)
|
||||
this.pkg.devDependencies = sortObject(this.pkg.devDependencies)
|
||||
this.pkg.scripts = sortObject(this.pkg.scripts, [
|
||||
'serve',
|
||||
'build',
|
||||
'test',
|
||||
'e2e',
|
||||
'lint',
|
||||
'deploy'
|
||||
])
|
||||
this.pkg = sortObject(this.pkg, [
|
||||
'name',
|
||||
'version',
|
||||
'private',
|
||||
'scripts',
|
||||
'dependencies',
|
||||
'devDependencies',
|
||||
'vue',
|
||||
'babel',
|
||||
'eslintConfig',
|
||||
'prettier',
|
||||
'postcss',
|
||||
'browserslist',
|
||||
'jest'
|
||||
])
|
||||
|
||||
debug('vue:cli-pkg')(this.pkg)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
module.exports = function sortObject (obj, keyOrder) {
|
||||
const res = {}
|
||||
const keys = Object.keys(obj)
|
||||
const getOrder = key => {
|
||||
const i = keyOrder.indexOf(key)
|
||||
return i === -1 ? Infinity : i
|
||||
}
|
||||
if (keyOrder) {
|
||||
keys.sort((a, b) => {
|
||||
return getOrder(a) - getOrder(b)
|
||||
})
|
||||
} else {
|
||||
keys.sort()
|
||||
}
|
||||
keys.forEach(key => {
|
||||
res[key] = obj[key]
|
||||
})
|
||||
return res
|
||||
}
|
||||
@@ -8799,10 +8799,6 @@ vue-template-es2015-compiler@^1.5.3, vue-template-es2015-compiler@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
|
||||
|
||||
vue@^2.5.13:
|
||||
version "2.5.13"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.13.tgz#95bd31e20efcf7a7f39239c9aa6787ce8cf578e1"
|
||||
|
||||
walker@~1.0.5:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
|
||||
|
||||
Reference in New Issue
Block a user