vue-intellisense
Version:
A CLI tool to help enabling IntelliSense on your Vue components
95 lines (78 loc) • 2.67 kB
JavaScript
#!/usr/bin/env node
import meow from 'meow'
import logSymbols from 'log-symbols'
import chalk from 'chalk'
import ora from 'ora'
import * as IsWhat from 'is-what'
const { isFullString } = IsWhat
import * as VueIntellisenseScripts from '@vue-intellisense/scripts'
const { generateVeturFiles } = VueIntellisenseScripts
const cli = meow(
`
Usage
$ vue-int --input <path> --output <path>
Options
--output, -o A folder to save the generated files.
--input, -i Either a Vue file, or a folder with vue components. In case it's a folder, it will not care about nested folders.
--recursive, -r consider all vue files in all nested folders as well.
--alias, -a List files contain aliases config.
Examples
# target a specific Vue file to generate IntelliSense for
$ vue-int --output 'vetur' --input 'src/components/MyButton.vue'
# target all files in a folder - without nested folders
$ vue-int --output 'vetur' --input 'src/components'
# target all files in a folder - with nested folders
$ vue-int --output 'vetur' --input 'src/components' --recursive
# target all files in a folder - with nested folders and and using alias for import
$ vue-int --output 'vetur' --input 'src/components' --recursive --alias alias.config.js other-alias.config.js
# support nested object inside config file like: { resolve: { alias: { "@components": "/src/components" } } }
$ vue-int --output 'vetur' --input 'src/components' --recursive --alias webpack.config.js#resolve#alias other-alias.config.js
Exits with code 0 when done or with 1 when an error has occured.
`,
{
importMeta: import.meta,
flags: {
input: {
alias: 'i',
type: 'string',
isRequired: true,
},
output: {
alias: 'o',
type: 'string',
isRequired: true,
},
recursive: {
alias: 'r',
type: 'boolean',
default: false,
},
alias: {
alias: 'a',
isMultiple: true,
type: 'string',
},
},
}
)
const { flags } = cli
const { input, output, recursive, alias } = flags
if (!isFullString(input)) {
console.error('Specify an input: --input <some/path>')
process.exit(1)
}
if (!isFullString(output)) {
console.error('Specify an output: --output <some/path>')
process.exit(1)
}
const spinner = ora(`Generating files`).start()
;(async () => {
await generateVeturFiles(input, output, { recursive, alias })
spinner.stop()
console.log(`${logSymbols.success} ${chalk.bold('done')}!`)
process.exit(0)
})().catch((error) => {
spinner.stop()
console.error(error)
process.exit(1)
})