child_process介绍
使用
- 在package.json添加运行指令
{
"scripts": {
"start": "node start.js"
}
}
- 同package.json同级新建一个start.js文件
/**
* @desc 使用yarn start可以启动打包后的dist项目,查看打包好的文件
*/
const { spawn } = require('child_process')
const isWin32 = process.platform === 'win32'
const child = spawn(isWin32 ? 'live-server.cmd' : 'live-server', {
cwd: './'
})
// stdout 获取标准输出
child.stdout.on('data', data => {
console.log(`stdout: ${data}`)
})
// stderr 获取标准错误输出
child.stderr.on('data', data => {
console.error(`stderr: ${data}`)
})
child.on('close', code => {
console.log(`子进程退出,退出码: ${code}`)
downLiveServer()
})
child.on('error', code => {
console.log(`子进程错误,错误码 ${code}`)
// downLiveServer()
})
/**
* @desc 如果没有安装live-server,则开启进程安装包
*/
function downLiveServer () {
// const child = spawn(isWin32 ? 'npm.cmd' : 'npm', ['install', '-D', 'live-server'])
const child = spawn(isWin32 ? 'yarn.cmd' : 'yarn', ['add', '-D', 'live-server'])
child.stdout.on('data', data => {
console.log(`live-server stdout: ${data}`)
})
child.stderr.on('data', data => {
console.log(`live-server stderr: ${data}`)
})
child.on('close', code => {
console.log(`live-server进程退出,退出码: ${code}`)
})
child.on('error', code => {
console.log(`live-server进程错误,错误码 ${code}`)
})
}
遇到的问题
spawn中执行live-server命令时报错 [Error: spawn ENOENT]” errors
原因:windows下live-server执行名不同
解决方案:
判断是不是win32平台
const isWin32 = process.platform === ‘win32’
不同平台使用不同命令,即 isWin32 ? ‘live-server.cmd’ : ‘live-server’