uni-app cli项目编译时插件会被执行两次

发布于 1周前 作者 phonegap100 来自 Uni-App

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项目中,如果遇到插件在编译过程中被执行两次的问题,这通常可能是由于配置不当或插件自身的逻辑导致。虽然不能直接给出具体的“不要这样做”的建议,但我们可以探讨一些可能的原因和检查点,并通过示例代码展示如何调试和定位这类问题。

可能的原因

  1. 配置重复:检查vue.config.jsuni.scssmanifest.json等配置文件,确保没有重复配置插件。
  2. 插件内部逻辑:某些插件可能在初始化或执行时有自己的逻辑判断,导致被重复触发。
  3. webpack链式调用:如果自定义了webpack配置,可能在链式调用中不小心重复应用了插件。

调试步骤

  1. 日志输出:在插件的入口文件添加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');
};
  1. 检查webpack配置:如果你自定义了webpack配置,检查是否有重复应用插件的代码。
// vue.config.js
const CustomWebpackPlugin = require('./path-to-your-plugin');

module.exports = {
  configureWebpack: {
    plugins: [
      // 确保没有重复添加
      new CustomWebpackPlugin(/* options */)
    ]
  }
};
  1. 检查uni-app配置:确保manifest.jsonpages.json等文件中没有重复配置影响到插件执行。

解决思路

  • 优化插件逻辑:确保插件内部有防重复执行的机制。
  • 清理配置文件:移除任何不必要的或重复的配置。
  • 升级依赖:检查是否有可用的插件或uni-app框架的更新,可能修复了此类问题。

通过上述方法,你可以逐步定位并解决uni-app CLI项目中插件被重复执行的问题。记得在修改配置或代码后彻底清理项目缓存(如node_modulesdist目录),以确保测试环境干净无干扰。

回到顶部