Skip to content

Commit

Permalink
feat(cli): build command
Browse files Browse the repository at this point in the history
  • Loading branch information
Guillaume Chau committed Jan 19, 2019
1 parent 576e336 commit bc0e06d
Showing 1 changed file with 47 additions and 15 deletions.
62 changes: 47 additions & 15 deletions packages/@nodepack/cli/src/bin/commands.js
Expand Up @@ -55,6 +55,25 @@ program
require('../commands/add')(pluginName, options)
})

program
.command('build')
.description('build your project using `nodepack-service build`')
.allowUnknownOption()
.action(cmd => {
const { pkg, packageManager } = getPkgInfo()
let command = 'nodepack-service'
let args = ['build']
if (pkg.scripts && pkg.scripts.dev) {
// Prefer 'run' script in package.json
command = packageManager
args = ['run', 'build']
}
exec(command, [
...args,
...process.argv.slice(3),
])
})

program
.command('env-info')
.description('print your environment infos for debugging')
Expand Down Expand Up @@ -131,36 +150,49 @@ async function noCommand () {

// In a nodepack project
if (fs.existsSync(path.resolve(cwd, '.nodepack')) || fs.existsSync(path.resolve(cwd, 'nodepack.config.js'))) {
const { installDeps, loadGlobalOptions, getPkgCommand, readPkg } = require('@nodepack/utils')
const execa = require('execa')

const packageManager = (
loadGlobalOptions().packageManager ||
getPkgCommand(cwd)
)
const { installDeps } = require('@nodepack/utils')
const { pkg, packageManager } = getPkgInfo()

// Auto-install
if (!fs.existsSync(path.resolve(cwd, 'node_modules'))) {
await installDeps(cwd, packageManager)
}

// Run command
const pkg = readPkg(cwd)
let command = 'nodepack-service'
let args = ['dev']
if (pkg.scripts && pkg.scripts.dev) {
// Prefer 'run' script in package.json
command = packageManager
args = ['run', 'dev']
}
execa(command, args, {
stdio: [process.stdin, process.stdout, process.stderr],
cwd: process.cwd(),
cleanup: true,
shell: false,
env: process.env,
})
exec(command, args)
} else {
program.outputHelp()
}
}

function getPkgInfo () {
const { loadGlobalOptions, getPkgCommand, readPkg } = require('@nodepack/utils')

const packageManager = (
loadGlobalOptions().packageManager ||
getPkgCommand(cwd)
)
const pkg = readPkg(cwd)
return {
packageManager,
pkg,
}
}

function exec (command, args) {
const execa = require('execa')
execa(command, args, {
stdio: [process.stdin, process.stdout, process.stderr],
cwd: process.cwd(),
cleanup: true,
shell: false,
env: process.env,
})
}

0 comments on commit bc0e06d

Please sign in to comment.