netlify-cli
Version: 
Netlify command line tool
56 lines (44 loc) • 1.48 kB
JavaScript
const process = require('process')
const { flags } = require('@oclif/command')
const { getBuildOptions, runBuild } = require('../../lib/build')
const Command = require('../../utils/command')
class BuildCommand extends Command {
  // Run Netlify Build
  async run() {
    // Retrieve Netlify Build options
    const options = await getBuildOptions({
      context: this,
      token: this.getConfigToken()[0],
      flags: this.parse(BuildCommand).flags,
    })
    this.checkOptions(options)
    await this.config.runHook('analytics', {
      eventName: 'command',
      payload: { command: 'build', dry: Boolean(options.dry) },
    })
    const exitCode = await runBuild(options)
    this.exit(exitCode)
  }
  checkOptions({ cachedConfig, token }) {
    const { siteInfo = {} } = JSON.parse(cachedConfig)
    if (!siteInfo.id && process.env.NODE_ENV !== 'test') {
      this.error('Could not find the site ID. Please run netlify link.', { exit: 1 })
    }
    if (!token) {
      this.error('Could not find the access token. Please run netlify login.', { exit: 1 })
    }
  }
}
// Netlify Build programmatic options
BuildCommand.flags = {
  dry: flags.boolean({
    description: 'Dry run: show instructions without running them',
  }),
  context: flags.string({
    description: 'Build context',
  }),
  ...BuildCommand.flags,
}
BuildCommand.description = `(Beta) Build on your local machine`
BuildCommand.examples = ['netlify build']
module.exports = BuildCommand