更新
This commit is contained in:
+3
@@ -0,0 +1,3 @@
|
||||
import type { UserConfig } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '..';
|
||||
export declare function createBuild(options: VitePluginUniResolvedOptions, config: UserConfig): UserConfig['build'];
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createBuild = void 0;
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const shared_1 = require("@vue/shared");
|
||||
function createBuild(options, config) {
|
||||
(0, uni_cli_shared_1.initEasycomsOnce)(options.inputDir, {
|
||||
dirs: (0, uni_cli_shared_1.resolveComponentsLibDirs)(),
|
||||
platform: process.env.UNI_PLATFORM,
|
||||
isX: process.env.UNI_APP_X === 'true',
|
||||
});
|
||||
const rollupOutputOption = config.build?.rollupOptions?.output;
|
||||
const sourcemap = process.env.SOURCEMAP === 'true' ? 'hidden' : config.build?.sourcemap;
|
||||
return {
|
||||
sourcemap,
|
||||
cssTarget: uni_cli_shared_1.cssTarget,
|
||||
chunkSizeWarningLimit: 100000000,
|
||||
minify: config.build && (0, shared_1.hasOwn)(config.build, 'minify')
|
||||
? config.build.minify
|
||||
: process.env.NODE_ENV === 'production'
|
||||
? 'terser'
|
||||
: false,
|
||||
rollupOptions: {
|
||||
onwarn(warning, warn) {
|
||||
if (warning.code === 'EMPTY_BUNDLE') {
|
||||
// 忽略空包警告,通常是条件编译之类导致的
|
||||
// Generated an empty chunk:
|
||||
return;
|
||||
}
|
||||
if (warning.code === 'UNUSED_EXTERNAL_IMPORT') {
|
||||
const { message } = warning;
|
||||
// ignore
|
||||
if (message.includes('"vue"') ||
|
||||
message.includes('"resolveComponent"') ||
|
||||
message.includes('"@dcloudio/uni-h5"')) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
warn(warning);
|
||||
},
|
||||
output: {
|
||||
sourcemapExcludeSources: !(0, shared_1.isArray)(rollupOutputOption) &&
|
||||
rollupOutputOption?.sourcemapExcludeSources === false
|
||||
? false
|
||||
: process.env.SOURCEMAP === 'true',
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.createBuild = createBuild;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import type { UserConfig } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '..';
|
||||
export declare function createCss(options: VitePluginUniResolvedOptions, config: UserConfig): UserConfig['css'];
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createCss = void 0;
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const fs_extra_1 = __importDefault(require("fs-extra"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
function resolveAdditionalData(inputDir, config) {
|
||||
const uniScssFile = path_1.default.resolve(inputDir, 'uni.scss');
|
||||
const userAdditionalData = config.css?.preprocessorOptions?.scss?.additionalData || '';
|
||||
if (!fs_extra_1.default.existsSync(uniScssFile)) {
|
||||
return userAdditionalData;
|
||||
}
|
||||
let content = fs_extra_1.default.readFileSync(uniScssFile, 'utf8');
|
||||
if (content.includes('#endif')) {
|
||||
content = (0, uni_cli_shared_1.preCss)(content, uniScssFile);
|
||||
}
|
||||
return content + '\n' + userAdditionalData;
|
||||
}
|
||||
function createCss(options, config) {
|
||||
return {
|
||||
preprocessorOptions: {
|
||||
scss: {
|
||||
charset: false,
|
||||
additionalData: resolveAdditionalData(options.inputDir, config),
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.createCss = createCss;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import type { UserConfig } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '..';
|
||||
export declare function createDefine(_: VitePluginUniResolvedOptions): UserConfig['define'];
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createDefine = void 0;
|
||||
const shared_1 = require("@vue/shared");
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
function createDefine(_) {
|
||||
return (0, shared_1.extend)({
|
||||
__VUE_I18N_FULL_INSTALL__: true,
|
||||
__VUE_I18N_LEGACY_API__: true,
|
||||
__VUE_I18N_PROD_DEVTOOLS__: false,
|
||||
__INTLIFY_PROD_DEVTOOLS__: false,
|
||||
}, (0, uni_cli_shared_1.initDefine)());
|
||||
}
|
||||
exports.createDefine = createDefine;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import type { Plugin } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '..';
|
||||
export declare function createConfig(options: VitePluginUniResolvedOptions, _uniPlugins: Plugin[]): Plugin['config'];
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createConfig = void 0;
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const css_1 = require("./css");
|
||||
const resolve_1 = require("./resolve");
|
||||
const build_1 = require("./build");
|
||||
const optimizeDeps_1 = require("./optimizeDeps");
|
||||
const define_1 = require("./define");
|
||||
function createConfig(options, _uniPlugins) {
|
||||
return (config, env) => {
|
||||
options.command = env.command;
|
||||
let base = config.base;
|
||||
if (!base) {
|
||||
const manifestJson = (0, uni_cli_shared_1.parseManifestJsonOnce)(options.inputDir);
|
||||
const h5 = (0, uni_cli_shared_1.getPlatformManifestJson)(manifestJson, 'h5');
|
||||
base = (h5 && h5.router && h5.router.base) || '';
|
||||
}
|
||||
if (!base) {
|
||||
base = '/';
|
||||
}
|
||||
options.base = base;
|
||||
const pluginConfig = {
|
||||
base: process.env.UNI_H5_BASE || base,
|
||||
root: process.env.VITE_ROOT_DIR,
|
||||
// TODO 临时设置为__static__,屏蔽警告:https://github.com/vitejs/vite/blob/824d042535033a5c3d7006978c0d05c201cd1c25/packages/vite/src/node/server/middlewares/transform.ts#L125
|
||||
publicDir: config.publicDir || '__static__',
|
||||
define: (0, define_1.createDefine)(options),
|
||||
resolve: (0, resolve_1.createResolve)(options, config),
|
||||
logLevel: config.logLevel || 'warn', // 默认使用 warn 等级,因为 info 等级vite:report 会输出文件列表等信息
|
||||
optimizeDeps: (0, optimizeDeps_1.createOptimizeDeps)(options),
|
||||
build: (0, build_1.createBuild)(options, config),
|
||||
css: (0, css_1.createCss)(options, config),
|
||||
esbuild: {
|
||||
include: /\.(tsx?|jsx|uts)$/,
|
||||
exclude: /\.js$/,
|
||||
loader: 'ts',
|
||||
},
|
||||
};
|
||||
if ((0, uni_cli_shared_1.isInHBuilderX)()) {
|
||||
pluginConfig.cacheDir = path_1.default.resolve(process.env.UNI_OUTPUT_DIR, '../../cache/.vite');
|
||||
}
|
||||
return pluginConfig;
|
||||
};
|
||||
}
|
||||
exports.createConfig = createConfig;
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
import type { UserConfig } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '..';
|
||||
export declare function createOptimizeDeps(_options: VitePluginUniResolvedOptions): UserConfig['optimizeDeps'];
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createOptimizeDeps = void 0;
|
||||
function createOptimizeDeps(_options) {
|
||||
return {
|
||||
exclude: [
|
||||
'vue',
|
||||
'vuex',
|
||||
'vue-i18n',
|
||||
'vue-router',
|
||||
'@dcloudio/uni-app',
|
||||
'@dcloudio/uni-components',
|
||||
'@dcloudio/uni-i18n',
|
||||
'@dcloudio/uni-shared',
|
||||
'@dcloudio/uni-stacktracey',
|
||||
'pinia',
|
||||
],
|
||||
};
|
||||
}
|
||||
exports.createOptimizeDeps = createOptimizeDeps;
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
import type { ResolverFunction, UserConfig } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '..';
|
||||
export declare const customResolver: ResolverFunction;
|
||||
export declare function createResolve(options: VitePluginUniResolvedOptions, _config: UserConfig): UserConfig['resolve'];
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createResolve = exports.customResolver = void 0;
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
function resolveUTSModuleProxyFile(id, importer) {
|
||||
const file = (0, uni_cli_shared_1.resolveUTSAppModule)(process.env.UNI_UTS_PLATFORM, id, importer);
|
||||
if (file) {
|
||||
// app-js 会返回完整路径,不需要 uts-proxy
|
||||
if (file.endsWith('.uts')) {
|
||||
return file;
|
||||
}
|
||||
return file + '?uts-proxy';
|
||||
}
|
||||
}
|
||||
const customResolver = (updatedId, importer) => {
|
||||
updatedId = updatedId.split('?')[0];
|
||||
const utsImporter = importer
|
||||
? path_1.default.dirname(importer)
|
||||
: process.env.UNI_INPUT_DIR;
|
||||
const utsModuleFile = process.env.UNI_PLATFORM === 'app' ||
|
||||
process.env.UNI_PLATFORM === 'app-harmony'
|
||||
? resolveUTSModuleProxyFile(updatedId, utsImporter)
|
||||
: (0, uni_cli_shared_1.resolveUTSModule)(updatedId, utsImporter);
|
||||
if (utsModuleFile) {
|
||||
return uni_cli_shared_1.isWindows ? (0, uni_cli_shared_1.normalizePath)(utsModuleFile) : utsModuleFile;
|
||||
}
|
||||
const resolveId = (0, uni_cli_shared_1.resolveEncryptUniModule)((0, uni_cli_shared_1.normalizePath)(updatedId), process.env.UNI_UTS_PLATFORM, process.env.UNI_APP_X === 'true');
|
||||
if (resolveId) {
|
||||
return resolveId;
|
||||
}
|
||||
if (uni_cli_shared_1.isWindows) {
|
||||
return (0, uni_cli_shared_1.normalizePath)((0, uni_cli_shared_1.requireResolve)(updatedId, importer || process.env.UNI_INPUT_DIR));
|
||||
}
|
||||
return (0, uni_cli_shared_1.requireResolve)(updatedId, importer || process.env.UNI_INPUT_DIR);
|
||||
};
|
||||
exports.customResolver = customResolver;
|
||||
function createResolve(options, _config) {
|
||||
const alias = [];
|
||||
if ((0, uni_cli_shared_1.isNormalCompileTarget)()) {
|
||||
// 加密组件内部使用的 vue export helper,需要重新映射回来
|
||||
alias.push({
|
||||
find: 'plugin-vue:export-helper',
|
||||
replacement: '\0plugin-vue:export-helper',
|
||||
});
|
||||
}
|
||||
return {
|
||||
// 必须使用alias解析,插件定制的resolveId,不会被应用到css等预处理器中
|
||||
alias: [
|
||||
// because @rollup/plugin-alias' type doesn't allow function
|
||||
// replacement, but its implementation does work with function values.
|
||||
{
|
||||
find: /^(~@|@)\/(.*)/,
|
||||
replacement(_str, _$1, $2) {
|
||||
return (0, uni_cli_shared_1.normalizePath)(path_1.default.resolve(options.inputDir, $2));
|
||||
},
|
||||
customResolver: exports.customResolver,
|
||||
},
|
||||
...alias,
|
||||
],
|
||||
extensions: process.env.UNI_APP_X === 'true' ? uni_cli_shared_1.uni_app_x_extensions : uni_cli_shared_1.extensions,
|
||||
preserveSymlinks: true,
|
||||
};
|
||||
}
|
||||
exports.createResolve = createResolve;
|
||||
Reference in New Issue
Block a user