| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.runBuild = exports.runDev = void 0;
- const fs_1 = __importDefault(require("fs"));
- const debug_1 = __importDefault(require("debug"));
- const vite_1 = __importDefault(require("unplugin-auto-import/vite"));
- const plugin_vue_jsx_1 = __importDefault(require("@vitejs/plugin-vue-jsx"));
- const plugin_legacy_1 = __importDefault(require("@vitejs/plugin-legacy"));
- const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
- const config_1 = require("./config");
- const configResolved_1 = require("./configResolved");
- const copy_1 = require("./plugins/copy");
- const move_1 = require("./plugins/move");
- const utils_1 = require("./utils");
- const vue_1 = require("./vue");
- const utils_2 = require("./cli/utils");
- const plugins_1 = require("./uvue/plugins");
- const debugUni = (0, debug_1.default)('uni:plugin');
- (0, uni_cli_shared_1.initModuleAlias)();
- var action_1 = require("./cli/action");
- Object.defineProperty(exports, "runDev", { enumerable: true, get: function () { return action_1.runDev; } });
- Object.defineProperty(exports, "runBuild", { enumerable: true, get: function () { return action_1.runBuild; } });
- let isFirst = true;
- function uniPlugin(rawOptions = {}) {
- // 重写readFileSync,拦截.scss 等文件读取,实现条件编译,
- (0, uni_cli_shared_1.rewriteScssReadFileSync)();
- if ((0, uni_cli_shared_1.isInHBuilderX)()) {
- (0, uni_cli_shared_1.rewriteExistsSyncHasRootFile)();
- }
- // 三方插件(如vitest)可能提供了自己的入口命令,需要补充 env 初始化逻辑
- (0, utils_2.initEnv)('unknown', { platform: process.env.UNI_PLATFORM || 'h5' });
- const options = {
- ...rawOptions,
- base: '/',
- assetsDir: 'assets',
- inputDir: '',
- outputDir: '',
- command: 'serve',
- platform: 'h5',
- };
- options.platform = process.env.UNI_PLATFORM || 'h5';
- options.inputDir = process.env.UNI_INPUT_DIR;
- const plugins = process.env.UNI_APP_X === 'true' &&
- process.env.UNI_UTS_PLATFORM === 'app-android'
- ? createUVueAndroidPlugins(options)
- : createPlugins(options);
- // x 提供 auto import(非android、android自行处理)
- if (process.env.UNI_APP_X === 'true' &&
- process.env.UNI_UTS_PLATFORM !== 'app-android') {
- plugins.unshift((0, vite_1.default)((0, uni_cli_shared_1.initAutoImportOptions)(process.env.UNI_UTS_PLATFORM, options.autoImportOptions || {})));
- }
- return plugins;
- }
- exports.default = uniPlugin;
- function createPlugins(options) {
- const plugins = [];
- // uni x 需要插入到指定位置,此插件执行太早,又会引发 vue 文件的不支持,该插件是解析ast的,所以必须是合法的js或ts代码
- if (process.env.UNI_APP_X === 'true') {
- plugins.push((0, uni_cli_shared_1.uniUTSExtApiReplace)());
- }
- else {
- const injects = (0, uni_cli_shared_1.parseUniExtApis)(true, process.env.UNI_UTS_PLATFORM, 'javascript');
- if (Object.keys(injects).length) {
- plugins.push((0, uni_cli_shared_1.uniViteInjectPlugin)('uni:ext-api-inject', injects));
- }
- }
- // 仅限 h5
- if (options.viteLegacyOptions && options.platform === 'h5') {
- plugins.push(...(0, plugin_legacy_1.default)((0, vue_1.initPluginViteLegacyOptions)(options)));
- }
- const uniPlugins = (0, utils_1.initExtraPlugins)(process.env.UNI_CLI_CONTEXT || process.cwd(), process.env.UNI_PLATFORM || 'h5', options);
- debugUni(uniPlugins);
- const uniPluginOptions = (0, utils_1.initPluginUniOptions)(uniPlugins);
- options.copyOptions = uniPluginOptions.copyOptions;
- if (options.vueJsxOptions) {
- plugins.push((0, plugin_vue_jsx_1.default)((0, vue_1.initPluginVueJsxOptions)(options, uniPluginOptions.compilerOptions, uniPluginOptions.jsxOptions)));
- }
- plugins.push({
- name: 'uni',
- config: (0, config_1.createConfig)(options, uniPlugins),
- // resolveId: createResolveId(options),
- configResolved: (0, configResolved_1.createConfigResolved)(options),
- });
- plugins.push(...uniPlugins);
- // plugins.push(...initFixedEsbuildInitTSConfck(process.env.UNI_INPUT_DIR))
- // 执行 build 命令时,vite 强制了 NODE_ENV
- // https://github.com/vitejs/vite/blob/main/packages/vite/src/node/build.ts#L405
- // const config = await resolveConfig(inlineConfig, 'build', 'production')
- // 在 @vitejs/plugin-vue 之前校正回来
- if (process.env.UNI_NODE_ENV &&
- process.env.UNI_NODE_ENV !== process.env.NODE_ENV) {
- process.env.NODE_ENV = process.env.UNI_NODE_ENV;
- }
- plugins.unshift((0, vue_1.createPluginVueInstance)((0, vue_1.initPluginVueOptions)(options, uniPlugins, uniPluginOptions)));
- let addCopyPlugin = false;
- if (options.platform !== 'app') {
- addCopyPlugin = true;
- }
- else {
- // 仅在 vue 或 纯原生 App.vue 编译时做 copy
- if (process.env.UNI_COMPILER === 'vue' ||
- (process.env.UNI_RENDERER === 'native' &&
- process.env.UNI_RENDERER_NATIVE === 'appService')) {
- addCopyPlugin = true;
- }
- else if (process.env.UNI_APP_X === 'true') {
- // app-ios
- addCopyPlugin = true;
- }
- }
- if (addCopyPlugin) {
- plugins.push((0, copy_1.uniCopyPlugin)({
- outputDir: process.env.UNI_OUTPUT_DIR,
- copyOptions: options.copyOptions,
- }));
- }
- if (process.env.SOURCEMAP === 'true') {
- // 清空之前的 sourcemap 目录
- const sourceMapPath = (0, uni_cli_shared_1.resolveSourceMapPath)();
- if (isFirst) {
- // 避免重复清空
- isFirst = false;
- if (fs_1.default.existsSync(sourceMapPath)) {
- (0, uni_cli_shared_1.emptyDir)(sourceMapPath);
- }
- plugins.push((0, move_1.uniMovePlugin)({
- apply: 'build',
- enforce: 'post',
- cwd: process.env.UNI_OUTPUT_DIR,
- pattern: '**/*.js.map',
- dest: sourceMapPath,
- }));
- }
- }
- (0, utils_1.rewriteCompilerSfcParse)();
- return plugins;
- }
- function createUVueAndroidPlugins(options) {
- const plugins = [];
- options.uvue = true;
- const uniPlugins = (0, utils_1.initExtraPlugins)(process.env.UNI_CLI_CONTEXT || process.cwd(), process.env.UNI_PLATFORM || 'h5', options);
- debugUni(uniPlugins);
- const uniPluginOptions = (0, utils_1.initPluginUniOptions)(uniPlugins);
- options.copyOptions = uniPluginOptions.copyOptions;
- plugins.push((0, plugins_1.uniUVuePlugin)(options));
- plugins.push(...uniPlugins);
- // plugins.push(...initFixedEsbuildInitTSConfck(process.env.UNI_INPUT_DIR))
- // 执行 build 命令时,vite 强制了 NODE_ENV
- // https://github.com/vitejs/vite/blob/main/packages/vite/src/node/build.ts#L405
- // const config = await resolveConfig(inlineConfig, 'build', 'production')
- // 在 @vitejs/plugin-vue 之前校正回来
- if (process.env.UNI_NODE_ENV &&
- process.env.UNI_NODE_ENV !== process.env.NODE_ENV) {
- process.env.NODE_ENV = process.env.UNI_NODE_ENV;
- }
- plugins.push((0, copy_1.uniCopyPlugin)({
- outputDir: process.env.UNI_OUTPUT_DIR,
- copyOptions: options.copyOptions,
- }));
- return plugins;
- }
|