修改构建规则后,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不能配置为空字符串
Logo

前往低代码交流专区

更多推荐