dcloudio / dcloudio/uni-app

希望 @dcloudio/vite-plugin-uni 中 viteLegacyOptions 对非 H5 平台也生效

Open
#3,842 6 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

**新功能描述**

希望 `@dcloudio/vite-plugin-uni` 中 `viteLegacyOptions` 对非 H5 平台也生效。

**现状及问题**

当前只对 H5 平台生效。如果使用了一些较新的 API,在某些平台上就会报错不可用,如 `String.prototype.replaceAll`。

image

image

**尝试方案**

1. 可以在项目 `main.ts` 内增加了 `core-js` 以解决问题,但增加的包体积较大。

```ts
// main.ts
import 'core-js/actual';
import { createSSRApp } from 'vue';
...
```

2. 参考 [@vue/babel-preset-app](https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/babel-preset-app#polyfills),手动增加 polyfills,增加的包体积可控且较小,但非常繁琐。

```ts
// main.ts
import 'core-js/actual/array/iterator';
import 'core-js/actual/promise';
import 'core-js/actual/object/assign';
import 'core-js/actual/promise/finally';
// import 'core-js/actual/string/replace-all'; // 另外增加需要的 polyfill
import { createSSRApp } from 'vue';
...
```

3. 修改 `@dcloudio/vite-plugin-uni`,去除 `&& options.platform === 'h5'`,但是运行会失败。

image

**补充信息**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.