mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-01-12 01:59:42 -06:00
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
require('events').defaultMaxListeners = 0
|
|
const path = require('path')
|
|
const fs = require('fs')
|
|
const fetch = require('node-fetch')
|
|
|
|
const promises = []
|
|
|
|
async function checkLink (file, link, n) {
|
|
try {
|
|
const result = await fetch(link, { method: 'HEAD' })
|
|
if (result.status !== 200) {
|
|
throw new Error('error')
|
|
} else {
|
|
console.log('[OK]', link, result.status)
|
|
}
|
|
} catch (e) {
|
|
console.warn('[!!]', link, `${file}:${parseInt(n) + 1}`)
|
|
throw e
|
|
}
|
|
}
|
|
|
|
function checkLinks (file) {
|
|
const contents = fs.readFileSync(file, { encoding: 'utf8' })
|
|
const lines = contents.split('\n')
|
|
for (const n in lines) {
|
|
const line = lines[n]
|
|
const matched = line.match(/link:\s+'(.+?)'/)
|
|
if (matched) {
|
|
const link = matched[1]
|
|
promises.push(checkLink(file, link, n))
|
|
}
|
|
}
|
|
}
|
|
|
|
function checkFiles (folder, all = false, recursive = false) {
|
|
const files = fs.readdirSync(folder)
|
|
for (const file of files) {
|
|
const fullPath = path.join(folder, file)
|
|
if (file === 'ui.js' || file === 'prompts.js') {
|
|
checkLinks(fullPath)
|
|
} else if (fs.statSync(fullPath).isDirectory()) {
|
|
checkFiles(fullPath, file === 'ui' || file === 'prompts')
|
|
} else if (all) {
|
|
checkLinks(fullPath)
|
|
}
|
|
}
|
|
}
|
|
|
|
checkFiles(path.resolve(__dirname, '../packages/@vue'), false, true)
|
|
checkFiles(path.resolve(__dirname, '../packages/@vue/cli/lib/promptModules'), true, true)
|
|
Promise.all(promises).catch(() => {
|
|
process.exit(1)
|
|
})
|