uni-app cli项目编译时插件会被执行两次
uni-app cli项目编译时插件会被执行两次
环境:
- [@vue](/user/vue)/cli: 4.5.19
- npm: 6.14.18
- node: v14.21.3
最小范例项目: https://gitee.com/yinshipeng/uniapp-cli-demo
问题:
1. 当执行npm run build:app-plus, 向configureWebpack注册的自定义插件被执行了两次
2. 再相同插件的情况下,只有uniapp cli的项目会出现这种情况,我用纯vue-cli的web项目不会执行两次。
说明:执行两次是指控制台会打印两次:BuilderPlugin 开始执行前置任务
1 回复
在uni-app CLI项目中,如果遇到插件在编译过程中被执行两次的问题,这通常可能是由于配置不当或插件自身的逻辑导致。虽然不能直接给出具体的“不要这样做”的建议,但我们可以探讨一些可能的原因和检查点,并通过示例代码展示如何调试和定位这类问题。
可能的原因
- 配置重复:检查
vue.config.js
、uni.scss
、manifest.json
等配置文件,确保没有重复配置插件。 - 插件内部逻辑:某些插件可能在初始化或执行时有自己的逻辑判断,导致被重复触发。
- webpack链式调用:如果自定义了webpack配置,可能在链式调用中不小心重复应用了插件。
调试步骤
- 日志输出:在插件的入口文件添加console.log,记录插件执行的开始和结束,帮助确定执行次数。
// 插件入口文件 example-plugin.js
module.exports = (api) => {
console.log('Plugin execution started');
api.onBuildStart(() => {
console.log('Build started');
// 插件逻辑
});
api.onBuildFinish(() => {
console.log('Build finished');
});
console.log('Plugin execution ended');
};
- 检查webpack配置:如果你自定义了webpack配置,检查是否有重复应用插件的代码。
// vue.config.js
const CustomWebpackPlugin = require('./path-to-your-plugin');
module.exports = {
configureWebpack: {
plugins: [
// 确保没有重复添加
new CustomWebpackPlugin(/* options */)
]
}
};
- 检查uni-app配置:确保
manifest.json
和pages.json
等文件中没有重复配置影响到插件执行。
解决思路
- 优化插件逻辑:确保插件内部有防重复执行的机制。
- 清理配置文件:移除任何不必要的或重复的配置。
- 升级依赖:检查是否有可用的插件或uni-app框架的更新,可能修复了此类问题。
通过上述方法,你可以逐步定位并解决uni-app CLI项目中插件被重复执行的问题。记得在修改配置或代码后彻底清理项目缓存(如node_modules
和dist
目录),以确保测试环境干净无干扰。