提交 dbea30e6 编写于 作者: fxy060608's avatar fxy060608

wip(app): css

上级 ef535ea1
......@@ -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);
}
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)
}
......@@ -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": {
......
......@@ -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<string>()
......
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)
}
})
}
......@@ -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",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册