diff --git a/packages/uni-app-vite/dist/plugin/configResolved.js b/packages/uni-app-vite/dist/plugin/configResolved.js index 53a65b9169e9e59db3a7b0d567c15e03e5be9659..e315c9e38961786f5e2de3c3a156b3ca29b308d0 100644 --- a/packages/uni-app-vite/dist/plugin/configResolved.js +++ b/packages/uni-app-vite/dist/plugin/configResolved.js @@ -2,41 +2,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.configResolved = void 0; const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared"); -const uni_cli_shared_2 = require("@dcloudio/uni-cli-shared"); const configResolved = (config) => { if (process.env.UNI_APP_CODE_SPLITING) { initCodeSpliting(config); } else { // 移除 vite 内置的 css post 处理,交由 @dcloudio/uni-cli-shared 的 uniCssPlugin 实现 - const index = config.plugins.findIndex((p) => p.name === 'vite:css-post'); - if (index > -1) { - ; - config.plugins.splice(index, 1); - } + uni_cli_shared_1.removePlugins(['vite:asset', 'vite:css-post'], config); } }; exports.configResolved = configResolved; function initCodeSpliting(config) { - // 替换内置插件 - const replacedPlugins = [ - uni_cli_shared_1.assetPlugin(config), - uni_cli_shared_2.cssPlugin(config), - uni_cli_shared_2.cssPostPlugin(config), - ]; - replacedPlugins.forEach((plugin) => { - const index = config.plugins.findIndex((p) => p.name === plugin.name); - if (index > -1) { - ; - config.plugins.splice(index, 1, plugin); - } - }); - const removedPlugins = ['vite:import-analysis']; - removedPlugins.forEach((name) => { - const index = config.plugins.findIndex((p) => p.name === name); - if (index > -1) { - ; - config.plugins.splice(index, 1); - } - }); + uni_cli_shared_1.removePlugins('vite:import-analysis', config); + uni_cli_shared_1.injectAssetAndCssPlugins(config); } diff --git a/packages/uni-app-vite/src/plugin/configResolved.ts b/packages/uni-app-vite/src/plugin/configResolved.ts index 8e6221bded2b0c4b01cc9e73481d84bc2500cd89..514f5a14f859f2e16d3988d5e9acb94343eb63e1 100644 --- a/packages/uni-app-vite/src/plugin/configResolved.ts +++ b/packages/uni-app-vite/src/plugin/configResolved.ts @@ -1,40 +1,20 @@ import { Plugin, ResolvedConfig } from 'vite' -import { assetPlugin } from '@dcloudio/uni-cli-shared' -import { cssPlugin, cssPostPlugin } from '@dcloudio/uni-cli-shared' +import { + removePlugins, + injectAssetAndCssPlugins, +} from '@dcloudio/uni-cli-shared' export const configResolved: Plugin['configResolved'] = (config) => { if (process.env.UNI_APP_CODE_SPLITING) { initCodeSpliting(config as ResolvedConfig) } else { // 移除 vite 内置的 css post 处理,交由 @dcloudio/uni-cli-shared 的 uniCssPlugin 实现 - const index = config.plugins.findIndex((p) => p.name === 'vite:css-post') - if (index > -1) { - ;(config.plugins as Plugin[]).splice(index, 1) - } + removePlugins(['vite:css-post'], config) } } function initCodeSpliting(config: ResolvedConfig) { - // 替换内置插件 - const replacedPlugins = [ - assetPlugin(config), - cssPlugin(config), - cssPostPlugin(config), - ] - replacedPlugins.forEach((plugin) => { - const index = (config.plugins as Plugin[]).findIndex( - (p) => p.name === plugin.name - ) - if (index > -1) { - ;(config.plugins as Plugin[]).splice(index, 1, plugin) - } - }) - const removedPlugins = ['vite:import-analysis'] - removedPlugins.forEach((name) => { - const index = config.plugins.findIndex((p) => p.name === name) - if (index > -1) { - ;(config.plugins as Plugin[]).splice(index, 1) - } - }) + removePlugins('vite:import-analysis', config) + injectAssetAndCssPlugins(config) } diff --git a/packages/uni-cli-nvue/package.json b/packages/uni-cli-nvue/package.json index a8878c23e986a0ac0913f93fc3af11e166325013..91ce91cea5efe0ed6fe04aec88d24ba1ad314a35 100644 --- a/packages/uni-cli-nvue/package.json +++ b/packages/uni-cli-nvue/package.json @@ -52,7 +52,7 @@ "vue-hot-reload-api": "^2.3.0", "vue-style-loader": "^4.1.0", "vue-template-es2015-compiler": "^1.9.0", - "webpack": "^5.45.1", + "webpack": "~5.45.1", "webpack-sources": "^3.1.2" }, "devDependencies": { diff --git a/packages/uni-cli-shared/src/vite/utils/index.ts b/packages/uni-cli-shared/src/vite/utils/index.ts index c9a45db452910b4b322000f69195fad2a6fbf109..8ab8fc6c0e67f245e1004e14f2088bf6cde7ce91 100644 --- a/packages/uni-cli-shared/src/vite/utils/index.ts +++ b/packages/uni-cli-shared/src/vite/utils/index.ts @@ -2,6 +2,7 @@ import { ResolvedConfig } from 'vite' export * from './ast' export * from './url' +export * from './plugin' // 内置组件css列表,h5平台需要合并进去首页css中 export const buildInCssSet = new Set() diff --git a/packages/uni-cli-shared/src/vite/utils/plugin.ts b/packages/uni-cli-shared/src/vite/utils/plugin.ts index aaccfef03ceaa270f472b294bb280edc2967d64f..0137d0c3dd8f2a01581d4989bc3b6ead0c2f24f2 100644 --- a/packages/uni-cli-shared/src/vite/utils/plugin.ts +++ b/packages/uni-cli-shared/src/vite/utils/plugin.ts @@ -1,5 +1,6 @@ import { Plugin, ResolvedConfig } from 'vite' - +import { assetPlugin } from '../plugins/vitejs/plugins/asset' +import { cssPlugin, cssPostPlugin } from '../plugins/vitejs/plugins/css' export type CreateUniViteFilterPlugin = ( opts: UniViteFilterPluginOptions ) => Plugin @@ -7,3 +8,36 @@ export interface UniViteFilterPluginOptions { resolvedConfig: ResolvedConfig filter: (id: string) => boolean } + +export function injectAssetAndCssPlugins(config: ResolvedConfig) { + replacePlugins( + [assetPlugin(config), cssPlugin(config), cssPostPlugin(config)], + config + ) +} + +export function replacePlugins(plugins: Plugin[], config: ResolvedConfig) { + plugins.forEach((plugin) => { + const index = (config.plugins as Plugin[]).findIndex( + (p) => p.name === plugin.name + ) + if (index > -1) { + ;(config.plugins as Plugin[]).splice(index, 1, plugin) + } + }) +} + +export function removePlugins( + plugins: string | string[], + config: ResolvedConfig +) { + if (!Array.isArray(plugins)) { + plugins = [plugins] + } + plugins.forEach((name) => { + const index = config.plugins.findIndex((p) => p.name === name) + if (index > -1) { + ;(config.plugins as Plugin[]).splice(index, 1) + } + }) +} diff --git a/tsconfig.json b/tsconfig.json index 557da9f6bdf322a375de007b8f387735f785b405..154ae45060f7001493eee232b1f76593bf94ca5f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,6 +27,7 @@ ], "rootDir": ".", "paths": { + "types/alias": ["packages/uni-cli-shared/types/alias.d.ts"], "@dcloudio/*": ["packages/*/src"], "@dcloudio/uni-platform": ["packages/uni-h5/src/platform/index.ts"] } @@ -42,6 +43,7 @@ "test-dts", "packages/uni-h5/types", "packages/uni-app-vite/types", + "packages/uni-cli-shared/types", "node_modules/mini-types/types/api/index.d.ts", "node_modules/mini-types/types/page.d.ts", "node_modules/mini-types/types/component.d.ts",