在其他仓库导入vue-cli 3组件库时遇模块构建错误求助
解决Vue CLI 3组件库引入后Babel预设"@vue/app"找不到的问题
这个报错本质是Babel的预设查找路径问题——你用Vue CLI 3创建的组件库,它的Babel配置依赖@vue/app预设,但这个预设只安装在组件库自己的node_modules里。当你把组件库引入到另一个项目时,Babel会从当前项目的根目录去查找这个预设,自然就找不到啦。
下面给你几个可行的解决办法:
方法1:在主项目中安装@vue/app相关依赖
直接在你要引入组件库的项目里安装对应依赖,命令如下:
npm install @vue/cli-plugin-babel --save-dev # 或者用yarn yarn add @vue/cli-plugin-babel --dev
这样Babel就能在主项目的node_modules里找到@vue/app预设了,操作简单直接。
方法2:修改组件库的Babel配置,脱离对@vue/app的依赖
如果你不想让主项目额外安装依赖,可以调整组件库的Babel配置:
- 打开组件库根目录的
babel.config.js(如果是.babelrc也适用) - 把原来的
presets: ['@vue/app']替换成更通用的预设组合,示例如下:
module.exports = { presets: [ ['@babel/preset-env', { targets: { browsers: ['last 2 versions', 'ie >= 11'] } }], '@vue/babel-preset-jsx' // 如果你用到了JSX语法才需要加这个 ] }
然后在组件库中安装对应的依赖:
npm install @babel/preset-env @vue/babel-preset-jsx --save-dev
这样组件库的Babel配置就不再依赖@vue/app,打包后的组件在主项目里能正常被解析。
方法3:将组件库打包成独立可引入的格式
Vue CLI 3提供了专门的库打包命令,你可以把组件库打包成无需额外编译的格式,主项目直接引入打包后的文件就不会有Babel问题了:
在组件库的package.json里添加打包脚本:
{ "scripts": { "build:lib": "vue-cli-service build --target lib --name your-lib-name src/index.js" } }
执行打包命令:
npm run build:lib
打包完成后,dist目录会生成对应的库文件,你可以直接把这些文件发布或者引入到主项目中使用。
内容的提问来源于stack exchange,提问作者Ryan Leahy




