Spaces:
Sleeping
Sleeping
| const pluginRE = /^(@vue\/|vue-|@[\w-]+(\.)?[\w-]+\/vue-)cli-plugin-/ | |
| const scopeRE = /^@[\w-]+(\.)?[\w-]+\// | |
| const officialRE = /^@vue\// | |
| const officialPlugins = [ | |
| 'babel', | |
| 'e2e-cypress', | |
| 'e2e-nightwatch', | |
| 'e2e-webdriverio', | |
| 'eslint', | |
| 'pwa', | |
| 'router', | |
| 'typescript', | |
| 'unit-jest', | |
| 'unit-mocha', | |
| 'vuex' | |
| ] | |
| exports.isPlugin = id => pluginRE.test(id) | |
| exports.isOfficialPlugin = id => exports.isPlugin(id) && officialRE.test(id) | |
| exports.toShortPluginId = id => id.replace(pluginRE, '') | |
| exports.resolvePluginId = id => { | |
| // already full id | |
| // e.g. vue-cli-plugin-foo, @vue/cli-plugin-foo, @bar/vue-cli-plugin-foo | |
| if (pluginRE.test(id)) { | |
| return id | |
| } | |
| if (id === '@vue/cli-service') { | |
| return id | |
| } | |
| if (officialPlugins.includes(id)) { | |
| return `@vue/cli-plugin-${id}` | |
| } | |
| // scoped short | |
| // e.g. @vue/foo, @bar/foo | |
| if (id.charAt(0) === '@') { | |
| const scopeMatch = id.match(scopeRE) | |
| if (scopeMatch) { | |
| const scope = scopeMatch[0] | |
| const shortId = id.replace(scopeRE, '') | |
| return `${scope}${scope === '@vue/' ? `` : `vue-`}cli-plugin-${shortId}` | |
| } | |
| } | |
| // default short | |
| // e.g. foo | |
| return `vue-cli-plugin-${id}` | |
| } | |
| exports.matchesPluginId = (input, full) => { | |
| const short = full.replace(pluginRE, '') | |
| return ( | |
| // input is full | |
| full === input || | |
| // input is short without scope | |
| short === input || | |
| // input is short with scope | |
| short === input.replace(scopeRE, '') | |
| ) | |
| } | |
| exports.getPluginLink = id => { | |
| if (officialRE.test(id)) { | |
| return `https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-${ | |
| exports.toShortPluginId(id) | |
| }` | |
| } | |
| let pkg = {} | |
| try { | |
| pkg = require(`${id}/package.json`) | |
| } catch (e) {} | |
| return ( | |
| pkg.homepage || | |
| (pkg.repository && pkg.repository.url) || | |
| `https://www.npmjs.com/package/${id.replace(`/`, `%2F`)}` | |
| ) | |
| } | |