How to use cac - 10 common examples

To help you get started, we’ve selected a few cac examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github egoist / poi / packages / poi / bin / main.js View on Github external
const cac = require('cac')
const updateNotifier = require('update-notifier')
const Poi = require('../lib')
const isPath = require('../lib/utils/isPath')
const pkg = require('../package')

require('loud-rejection')()

updateNotifier({ pkg }).notify()

// To start Poi, we will need to know which `command` you're calling
// And you can also supply options via CLI flags
const { input, flags } = cac.parse(process.argv.slice(2))

// Handle `--version` before starting Poi
if (flags.version || flags.v) {
  console.log(require('../package').version)
  process.exit()
}

// Get command from CLI input
// When there's no input or the first element of input is a file path
// We think you're in the `develop` command
// Otherwise you're in the `input[0]` command
// And the rest of input becomes the webpack `entry`
let command
let entry
if (!input[0] || isPath(input[0])) {
  command = 'develop'
github egoist / bili / src / index.js View on Github external
/* eslint-disable unicorn/no-process-exit */
import cac from 'cac'
import update from 'update-notifier'
import bili from './bili'
import { handleRollupError } from './utils'

const cli = cac()

update({ pkg: cli.pkg }).notify()

cli
  .option('config', {
    desc: 'Path to config file',
    alias: 'c'
  })
  .option('watch', {
    desc: 'Run in watch mode',
    alias: 'w'
  })
  .option('filename', {
    desc: 'The filename of output file, no extension',
    alias: 'n'
  })
github shuidi-fed / vuese / packages / cli / lib / index.ts View on Github external
import cac from 'cac'
import JoyCon from 'joycon'
import fs from 'fs-extra'
import { BabelParserPlugins } from '@vuese/parser'
import Log from 'log-horizon'
import preview from './preview'
import genDocute from './genDocute'
import genMarkdown from './genMarkdown'
import server from './server'

// Gotta fix after https://github.com/tabrindle/envinfo/pull/105 gets merged (type-definitions)
const envinfo = require('envinfo')

const logger = Log.create()
const cli = cac()
const joycon = new JoyCon({
  packageKey: 'vuese'
})
joycon.addLoader({
  test: /\.vueserc$/,
  async load(filePath) {
    const source = await fs.readFile(filePath, 'utf-8')
    return JSON.parse(source)
  }
})

export type CliOptions = {
  include: string | string[]
  exclude: string | string[]
  outDir: string
  markdownDir: string
github upash / peco / bin / cli.js View on Github external
#!/usr/bin/env node
if (parseInt(process.versions.node, 10) < 8) {
  const chalk = require('chalk')
  console.error(
    chalk.red(
      `Peco requires Node.js version >= 8, please upgrade!\nCheck out ${chalk.underline(
        'https://nodejs.org'
      )}`
    )
  )
  process.exit(1)
}

const cac = require('cac').default

const cli = cac()

cli
  .command('dev', 'Develop website locally', (input, flags) => {
    const app = require('../lib')(Object.assign({ baseDir: input[0] }, flags))

    return app.dev()
  })
  .option('port', {
    desc: 'Port for dev server',
    type: 'number'
  })

cli.command('build', 'Build website to static HTML files', (input, flags) => {
  const app = require('../lib')(Object.assign({ baseDir: input[0] }, flags))

  return app.build()
github egoist / poi / packages / poi / bin / cli.js View on Github external
#!/usr/bin/env node
const cac = require('cac').default
const pkg = require('../package')

const { input, flags } = cac.parse(process.argv.slice(2))

if (flags.version || flags.v) {
  console.log(pkg.version)
  process.exit()
}

const {
  config: configFile,
  baseDir,
  inspectWebpack,
  progress,
  debug,
  debugTrace,
  cleanOutDir,
  jsx,
  clearConsole,
github egoist / taki / src / cli.js View on Github external
#!/usr/bin/env node
import fs from 'fs'
import cac from 'cac'

const cli = cac()

cli.command('*', {
  desc: 'Take a snapshot',
  examples: [
    'taki https://google.com --output out.html',
    'taki https://vuejs.org --block-cross-origin --verbose'
  ]
}, async (input, flags) => {
  if (input.length === 0) return cli.showHelp()
  const url = input[0]
  const options = {
    url: /^https?:\/\//.test(url) ? url : `http://${url}`,
    ...flags
  }

  if (flags.verbose) {
github zaaack / foy / src / cli.ts View on Github external
if (nodeModulePaths) {
    Module._nodeModulePaths = (...args) => {
      let paths = nodeModulePaths.apply(Module, args)
      if (Array.isArray(paths)) {
        paths.push(globalFoyPath)
      }
      return paths
    }
  }
}

for (const file of foyFiles) {
  require(file)
}

const taskCli = cac()

let taskManager = getGlobalTaskManager()
taskManager.getTasks().forEach(t => {
  let strict = taskManager.globalOptions.strict || t.strict
  let cmd = taskCli.command(t.name, t.desc, { allowUnknownOptions: !strict })
  if (t.optionDefs) {
    t.optionDefs.forEach(def => cmd.option(...def))
  }
  cmd.action(async (...args) => {
    let options = args.pop()
    let { globalOptions } = taskManager
    globalOptions.rawArgs = taskCli.rawArgs
    globalOptions.options = options
    if (globalOptions.before) {
      await globalOptions.before()
    }
github egoist / bili / src / cli.js View on Github external
#!/usr/bin/env node
import cac from 'cac'
import Bili from '.'

const cli = cac()

cli
  .command('*', 'Bundle library', async (input, flags) => {
    const options = {
      input,
      ...flags
    }
    if (options.input.length === 0) {
      delete options.input
    }
    if (options.debug) {
      options.logLevel = 4
    } else if (options.quiet) {
      options.logLevel = 1
    }
    Bili.write(options).catch(Bili.handlError)
github egoist / bili / src / cli.ts View on Github external
#!/usr/bin/env node
import 'v8-compile-cache'
import cac from 'cac'
import { version } from '../package.json'

if (process.env.BILI_LOCAL_PROFILE) {
  const requireSoSlow = require('require-so-slow')
  process.on('exit', () => {
    requireSoSlow.write('require-trace.trace')
  })
}

const cli = cac('bili')

cli
  .command('[...input]', 'Bundle input files', {
    ignoreOptionDefaultValue: true
  })
  .option('-w, --watch', 'Watch files')
  .option(
    '--format ',
    'Output format (cjs | umd | es  | iife), can be used multiple times'
  )
  .option('--input.* [file]', 'An object mapping names to entry points')
  .option('-d, --out-dir ', 'Output directory', { default: 'dist' })
  .option('--root-dir ', 'The root directory to resolve files from')
  .option('--file-name ', 'Set the file name for output files')
  .option('--module-name ', 'Set the module name for umd bundle')
  .option('--env.* [value]', 'Replace env variables')
github egoist / detect-es / src / cli.js View on Github external
#!/usr/bin/env node
import fs from 'fs-extra'
import cac from 'cac'
import globby from 'globby'
import chalk from 'chalk'
import { parse } from '.'

const cli = cac()

cli
  .option('apiOnly', {
    desc: 'Only show APIs like Promise',
    type: 'boolean'
  })
  .option('dedupe', {
    desc: 'Remove duplicated warnings for the same feature',
    type: 'boolean'
  })

cli.command('*', {
  desc: 'Detect from input files',
  examples: [
    `${chalk.cyan(cli.bin)} "dist/**/*.js"`,
    `${chalk.cyan(cli.bin)} "src/*.js" --dedupe`,

cac

Simple yet powerful framework for building command-line apps.

MIT
Latest version published 1 year ago

Package Health Score

72 / 100
Full package analysis