ERROR Invalid options in vue.config.js: child “outputDir“ fails because [“outputDir“ is not allowed

修改构建规则后,lint报ERROR Invalid options in vue.config.js: child “outputDir” fails because [“outputDir” is not allowed to be empty]

起因

本地修改了项目单页构建的规则,结果提交代码时git pre-commit的钩子触发了vue-cli-service lint,表示校验不通过,并报

ERROR  Invalid options in vue.config.js: child "outputDir" fails because ["outputDir" is not allowed to be empty]

分析

项目是多个单页通过build传参分开构建的,从"outputDir" is not allowed to be empty可以看出是vue.config.js配置里的outputDir传了个空值,可能是lint默认会将package.json里的script都走一遍。

处理办法

给outputDir设置默认值
在这里插入图片描述

思考

Q:原来的构建也需要传参,为什么以前的构建能通过呢?
A:先贴一段修改之后的代码

getOutputDir(project) {
        let globPath = `./src/pages/${project}/**/main.js`
        let p = ''
        console.log(globPath)
        glob.sync(globPath).forEach(function (entry) {
            const paths = entry.split('/') || []
            // 单页名,如ground-push,register...
            let [a, b, c, ...ps] = paths
            console.log('paths:',paths, ps)
            console.log('outputDir:', `dist/${ps.slice(0, ps.length - 2).join('/')}`)
            p = `dist/${ps.slice(0, ps.length - 2).join('/')}`
        })
        console.log('outputDirs:', p)
        return p
    }

再贴一段修改之前的:

{
	outputDir: `dist/${project}`
}

可以看出,虽然project(构建参数)为undefined,但这个字符串是有值的,而且后面试了,将outputDir设置为undefined或者null都可以lint通过,唯独上面的方法,在project为undefined时,返回的是空字符串,此时是不通过的。

总结

  • 默认配置下 vue-cli-service lint 会同时lint package.json的script的每一项(不传参数)
  • vue.config.js 的 outputDir不能配置为空字符串
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值