提交 f5ff2bbc 编写于 作者: fxy060608's avatar fxy060608

chore: add checkVersion

上级 2f3ffbe8
......@@ -20,4 +20,5 @@ export const M = {
'easycom.conflict': 'easycom组件冲突:',
'mp.component.args[0]': '{0}的第一个参数必须为静态字符串',
'mp.component.args[1]': '{0}需要两个参数',
'mp.360.unsupported': 'vue3暂不支持360小程序',
}
......@@ -43,6 +43,10 @@ export function addConfigFile(inlineConfig: InlineConfig) {
}
export function initEnv(type: 'dev' | 'build', options: CliOptions) {
if (options.platform === 'mp-360') {
console.error(M['mp.360.unsupported'])
process.exit(0)
}
if (type === 'dev') {
process.env.NODE_ENV = 'development'
} else if (type === 'build') {
......
const path = require('path')
const execa = require('execa')
const { resolvePackages } = require('./utils')
async function getVersion(name, tag = 'latest') {
return (
await execa('npm', ['view', name + '@' + tag, 'version'])
).stdout.trim()
}
const pkgs = {
vue: {
next: '3.2.22',
},
'vue-router': {
next: '4.0.12',
},
vuex: {
next: '4.0.2',
},
'vue-i18n': {
next: '9.1.7',
},
vite: {
latest: '2.6.14',
},
'@vitejs/plugin-vue': {
latest: '1.9.4',
},
'@vitejs/plugin-vue-jsx': {
latest: '1.2.0',
},
'@vitejs/plugin-legacy': {
latest: '1.6.2',
},
'@dcloudio/types': {
latest: '2.5.13',
},
}
async function checkVersions() {
for (const name of Object.keys(pkgs)) {
for (const tag of Object.keys(pkgs[name])) {
const oldVersion = pkgs[name][tag]
const newVersion = await getVersion(name, tag)
if (oldVersion !== newVersion) {
console.log(
name +
':' +
' '.repeat(
80 - (name + ':' + oldVersion + ' => ' + newVersion).length
) +
oldVersion +
' => ' +
newVersion
)
} else {
console.log(
name +
':' +
' '.repeat(80 - (name + ':' + newVersion).length) +
newVersion
)
}
}
}
}
const packages = resolvePackages('../packages').filter(
(name) => name !== 'size-check'
)
const deps = Object.create(null)
function resolveDeps(owner, dependencies) {
if (!dependencies) {
return
}
Object.keys(dependencies).forEach((name) => {
if (name.startsWith('@dcloudio')) {
return
}
;(deps[name] || (deps[name] = {}))[owner] = dependencies[name]
})
}
function resolvePkgDeps(pkgPath) {
const {
name,
dependencies,
devDependencies,
peerDependencies,
} = require(pkgPath)
resolveDeps(name, dependencies)
// resolveDeps(name, devDependencies)
resolveDeps(name, peerDependencies)
}
const paths = [
path.resolve(__dirname, '../packages/vite-plugin-uni/node_modules'),
]
const vuePkgs = [
require.resolve('vite/package.json'),
require.resolve('@vitejs/plugin-vue/package.json'),
require.resolve('@vitejs/plugin-vue-jsx/package.json'),
require.resolve('@vitejs/plugin-legacy/package.json', { paths }),
require.resolve('@vue/compiler-core/package.json', { paths }),
require.resolve('@vue/compiler-dom/package.json', { paths }),
require.resolve('@vue/compiler-sfc/package.json', { paths }),
]
function checkDeps() {
vuePkgs.forEach((pkg) => resolvePkgDeps(pkg))
packages.forEach((pkg) => {
resolvePkgDeps(path.resolve(__dirname, '../packages', pkg, 'package.json'))
})
console.log(
Object.keys(deps)
.filter((name) => {
const versions = Object.values(deps[name])
return new Set(versions).size > 1
})
.map((name) => {
return {
name,
owners: deps[name],
}
})
)
}
async function run() {
checkDeps()
await checkVersions()
}
run()
......@@ -2,6 +2,7 @@ const fs = require('fs')
const path = require('path')
const chalk = require('chalk')
const { prompt } = require('enquirer')
const { resolvePackages } = require('./utils')
const args = process.argv.slice(2)
const packages = [
...resolvePackages('../packages'),
......@@ -10,18 +11,6 @@ const packages = [
),
]
function resolvePackages(dirname) {
dirname = path.resolve(__dirname, dirname)
return fs
.readdirSync(dirname)
.filter(
(p) =>
!p.endsWith('.ts') &&
!p.startsWith('.') &&
fs.existsSync(path.join(dirname, p, 'package.json'))
)
}
const getPkgRoot = (pkg) => path.resolve(__dirname, '../packages/' + pkg)
function updateVersions(module, oldVersion, newVersion) {
......
......@@ -74,3 +74,15 @@ exports.fuzzyMatchTarget = (partialTargets, includeAllMatching) => {
process.exit(1)
}
}
exports.resolvePackages = (dirname) => {
dirname = path.resolve(__dirname, dirname)
return fs
.readdirSync(dirname)
.filter(
(p) =>
!p.endsWith('.ts') &&
!p.startsWith('.') &&
fs.existsSync(path.join(dirname, p, 'package.json'))
)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册