uni-app icon indicating copy to clipboard operation
uni-app copied to clipboard

support webpack5

Open bigbossx opened this issue 3 years ago • 15 comments

Are there any plans to support webpack5?

it seems uni is compiled via @vue/services which the new version already supports webpack 5.but simply updating the @vue/services version doesn't seem to work as there are still some uni custom plugins, is there any other way ?

bigbossx avatar Jul 21 '22 14:07 bigbossx

https://github.com/dcloudio/uni-app/issues/3617

zhetengbiji avatar Jul 22 '22 03:07 zhetengbiji

https://github.com/dcloudio/uni-app/issues/2945

zhetengbiji avatar Jul 22 '22 03:07 zhetengbiji

https://github.com/dcloudio/uni-app/issues/2793

zhetengbiji avatar Jul 22 '22 03:07 zhetengbiji

https://github.com/dcloudio/uni-app/issues/3001

ModyQyW avatar Jul 22 '22 03:07 ModyQyW

https://github.com/dcloudio/uni-app/issues/3342

zhetengbiji avatar Jul 22 '22 03:07 zhetengbiji

https://github.com/dcloudio/uni-app/issues/2804

zhetengbiji avatar Jul 22 '22 03:07 zhetengbiji

使用 vue-cli 创建 alpha 分支已支持,使用中发现问题请反馈。

npm install -g @vue/cli@5
vue create -p dcloudio/uni-preset-vue#alpha test

已知问题:

  • ~~遗留部分警告未处理。~~
  • ~~Win 平台 dev 模式编译结束(小程序、App)会结束进程。~~

zhetengbiji avatar Aug 11 '22 08:08 zhetengbiji

使用 vue-cli 创建 alpha 分支已支持,使用中发现问题请反馈。

npm install -g @vue/cli@5
vue create -p dcloudio/uni-preset-vue#alpha test

已知问题:

  • 遗留部分警告未处理。
  • Win 平台 dev 模式编译结束(小程序、App)会结束进程。

Awesome work! 近期我将基于此进行升级工作。

btw,为什么在webpack4的模式下微信小程序模式打包基本没有cache的构建缓存,在项目体量上来之后,目前一次完整的watch mode 启动(1600多个模块),需要至少30-40s的时间。我看到了类似如下的逻辑

image

image

我是否错过了什么说明文档,是否可以配置什么去开启cache优化呢

bigbossx avatar Aug 11 '22 08:08 bigbossx

使用 vue-cli 创建 alpha 分支已支持,使用中发现问题请反馈。

npm install -g @vue/cli@5
vue create -p dcloudio/uni-preset-vue#alpha test

已知问题:

  • 遗留部分警告未处理。
  • Win 平台 dev 模式编译结束(小程序、App)会结束进程。

Awesome work! 近期我将基于此进行升级工作。

btw,为什么在webpack4的模式下微信小程序模式打包基本没有cache的构建缓存,在项目体量上来之后,目前一次完整的watch mode 启动(1600多个模块),需要至少30-40s的时间。我看到了类似如下的逻辑

image

image

我是否错过了什么说明文档,是否可以配置什么去开启cache优化呢

部分情况下(如使用条件编译或编译到多个平台)缓存会错乱,所以禁用了 cache。另外在 webpack5 内置了 cache 功能,但是框架近期更新并未处理和验证相关逻辑,使用时需要注意一下,后续我会单独验证和处理一下这部分。

zhetengbiji avatar Aug 11 '22 09:08 zhetengbiji

文档是否可以更新一下呢?

image

ModyQyW avatar Aug 17 '22 01:08 ModyQyW

文档是否可以更新一下呢?

image

我认为目前还没有到能正式使用的阶段,@vue/cli的相关uni插件也要同步更新,但是它仅处于alpha阶段,需要大量的验证和测试, 我初步进行了使用,可惜迁移并不太顺利。

bigbossx avatar Aug 17 '22 02:08 bigbossx

btw,development开启了UNI_USING_CACHE以后,再次启动编译从26s,减少到了7s,还在进一步观察是否有缓存所带来的相关问题。但它确实会提供值得一试的优化效果

bigbossx avatar Aug 17 '22 02:08 bigbossx

我也认为没到能正式使用的阶段,但希望通过写进文档吸引更多的人参与测试。

ModyQyW avatar Aug 17 '22 02:08 ModyQyW

依赖更新到 2.0.1-alpha-35420220816001

  • 默认关闭了 babel-loader 的 cache(调整为和 webpack4 一致)。
  • 修复了导致小程序端组件编译失败的一些问题。

zhetengbiji avatar Aug 17 '22 03:08 zhetengbiji

我也认为没到能正式使用的阶段,但希望通过写进文档吸引更多的人参与测试。

好的,文档将增加一行相关说明

zhetengbiji avatar Aug 17 '22 03:08 zhetengbiji

大概什么时候可以正式使用?

zhaotoday avatar Oct 17 '22 00:10 zhaotoday

希望能够尽快完成支持webpack5,webpack4和新tls版本node18不兼容

lvzhenbo avatar Oct 26 '22 03:10 lvzhenbo

大概什么时候可以正式使用?

再观察一段时间无开发者报告相关问题

zhetengbiji avatar Oct 27 '22 03:10 zhetengbiji

postcss出现一些弃用警告

trim: postcss.plugin was deprecated. Migration guide:
https://evilmartians.com/chronicles/postcss-8-plugin-migration​
​remove-scoped: postcss.plugin was deprecated. Migration guide:
https://evilmartians.com/chronicles/postcss-8-plugin-migration​
​add-id: postcss.plugin was deprecated. Migration guide:
https://evilmartians.com/chronicles/postcss-8-plugin-migration​

lvzhenbo avatar Nov 09 '22 05:11 lvzhenbo

postcss出现一些弃用警告

trim: postcss.plugin was deprecated. Migration guide:
https://evilmartians.com/chronicles/postcss-8-plugin-migration​
​remove-scoped: postcss.plugin was deprecated. Migration guide:
https://evilmartians.com/chronicles/postcss-8-plugin-migration​
​add-id: postcss.plugin was deprecated. Migration guide:
https://evilmartians.com/chronicles/postcss-8-plugin-migration​

执行 npx @dcloudio/uvm alpha 更新一下依赖

zhetengbiji avatar Nov 14 '22 10:11 zhetengbiji

希望能够尽快完成支持webpack5,webpack4和新tls版本node18不兼容

目前已处理完已知的兼容问题

zhetengbiji avatar Nov 14 '22 13:11 zhetengbiji

@zhetengbiji 还有多久可以正式使用?

zhaotoday avatar Nov 24 '22 05:11 zhaotoday

@zhetengbiji 还有多久可以正式使用?

从目前的反馈看,已经可以正式使用,将会随着下个正式版的发布调整相关文档。

zhetengbiji avatar Nov 24 '22 06:11 zhetengbiji

@zhetengbiji 还有多久可以正式使用?

从目前的反馈看,已经可以正式使用,将会随着下个正式版的发布调整相关文档。

大概几号可以正式使用。

zhaotoday avatar Nov 28 '22 03:11 zhaotoday

@zhetengbiji 还有多久可以正式使用?

从目前的反馈看,已经可以正式使用,将会随着下个正式版的发布调整相关文档。

大概几号可以正式使用。

从目前的反馈看,上个月已经可以正式使用。但下个正式版的发布才会调整相关文档。

zhetengbiji avatar Nov 28 '22 06:11 zhetengbiji

当使用 Webpack5 时,如果在 src/pages.json 配置了 subPackages 字段分包,然后在 src/manifest.json 文件开启 optimization.subPackages 分包优化时,编译就会陷入死循环。

// src/manifest.json
{
  "mp-weixin": {
    "optimization": {
      // 开启分包优化
      "subPackages": true
    }
  }
}

经过调试发现 cacheGroupstest 传入函数时,第二个参数 chunks 不再是数组,

https://github.com/dcloudio/uni-app/blob/fbc8c10e6960c43c3c74e4d7a974ee22e3fc4be4/packages/vue-cli-plugin-uni/lib/split-chunks.js#L125-L157

optimization.subPackages 分包优化的逻辑是用到了第二个参数 chunks 的,导致在 Webpack 编译过程中执行报错,错误没有被捕获也没有抛出来,所以编译一直在运行。

test 参数结构如下图:

image

Webpack5 的文档在这里:https://webpack.docschina.org/plugins/split-chunks-plugin/#splitchunkscachegroupstest

目前我的处理方案是这样的,通过拦截 test 函数进行参数包装:

// vue.config.js
const { defineConfig } = require('@vue/cli-service');

module.exports = defineConfig({
  configureWebpack: config => {
    const { cacheGroups } = config.optimization.splitChunks;

    if (cacheGroups) {
      Object.keys(cacheGroups).forEach(chunkName => {
        const { test } = cacheGroups[chunkName];

        if (typeof test === 'function') {
          cacheGroups[chunkName].test = (module, { chunkGraph }) => {
            return test(module, chunkGraph.getModuleChunks(module));
          };
        }
      });
    }
  },
});

如果有空的话,还是希望官方能处理下这个问题,我看到在社区也有类似的文章,答案都是关闭 optimization.subPackages 选项。

zhijiang3 avatar Dec 01 '22 08:12 zhijiang3

image

jiekechens avatar Feb 13 '23 14:02 jiekechens

哥 我这个都把vue/cli 降到 4.5.15了 他还是不行

jiekechens avatar Feb 13 '23 14:02 jiekechens

哥 我这个都把vue/cli 降到 4.5.15了 他还是不行

已经更新到正式版了,直接用cli5就行

lvzhenbo avatar Feb 13 '23 14:02 lvzhenbo

webpack5的支持已经更新到正式版本了吗?我看官网上还没更新文档,求问

hedonghui avatar Apr 22 '23 05:04 hedonghui