更新
This commit is contained in:
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
import type { ResolvedConfig } from 'vite';
|
||||
import type { FilterPattern } from '@rollup/pluginutils';
|
||||
import type { VitePluginUniResolvedOptions } from '../..';
|
||||
export interface UniPluginFilterOptions extends VitePluginUniResolvedOptions {
|
||||
include?: FilterPattern;
|
||||
exclude?: FilterPattern;
|
||||
}
|
||||
export declare function initPlugins(config: ResolvedConfig, options: VitePluginUniResolvedOptions): void;
|
||||
Generated
Vendored
+50
@@ -0,0 +1,50 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.initPlugins = void 0;
|
||||
// import debug from 'debug'
|
||||
const shared_1 = require("@vue/shared");
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const json_1 = require("./json");
|
||||
const preCss_1 = require("./preCss");
|
||||
const static_1 = require("./static");
|
||||
const preVue_1 = require("./preVue");
|
||||
const ssr_1 = require("./ssr");
|
||||
const resolveId_1 = require("./resolveId");
|
||||
const UNI_H5_RE = /@dcloudio\/uni-h5/;
|
||||
function initPlugins(config, options) {
|
||||
const uniPrePluginOptions = {
|
||||
exclude: [...uni_cli_shared_1.COMMON_EXCLUDE, UNI_H5_RE],
|
||||
};
|
||||
const uniPreCssPluginOptions = {
|
||||
exclude: [...uni_cli_shared_1.COMMON_EXCLUDE],
|
||||
};
|
||||
const plugins = config.plugins;
|
||||
addPlugin(plugins, (0, resolveId_1.uniResolveIdPlugin)(options), 'vite:resolve', 'pre');
|
||||
addPlugin(plugins, (0, uni_cli_shared_1.uniPrePlugin)(config, (0, shared_1.extend)(uniPrePluginOptions, options)), 0, 'pre');
|
||||
addPlugin(plugins, (0, preCss_1.uniPreCssPlugin)(config, (0, shared_1.extend)(uniPreCssPluginOptions, options)), 'vite:css');
|
||||
addPlugin(plugins, (0, preVue_1.uniPreVuePlugin)(), 'vite:vue', 'pre');
|
||||
addPlugin(plugins, (0, ssr_1.uniSSRPlugin)(config, (0, shared_1.extend)({ exclude: [...uni_cli_shared_1.COMMON_EXCLUDE, /\/@dcloudio\/uni-app/] }, options)), process.env.UNI_APP_X === 'true' ? 'uts' : 'vite:vue');
|
||||
addPlugin(plugins, (0, json_1.uniJsonPlugin)(options), 'vite:json', 'pre');
|
||||
addPlugin(plugins, (0, static_1.uniStaticPlugin)(options, config), 'vite:asset', 'pre');
|
||||
if (process.env.UNI_HBUILDERX_PLUGINS && (0, uni_cli_shared_1.isNormalCompileTarget)()) {
|
||||
try {
|
||||
const { V } = (0, uni_cli_shared_1.requireUniHelpers)();
|
||||
addPlugin(plugins, V({
|
||||
dir: process.env.UNI_INPUT_DIR,
|
||||
cacheDir: process.env.UNI_MODULES_ENCRYPT_CACHE_DIR,
|
||||
}), 0, 'pre');
|
||||
}
|
||||
catch (e) { }
|
||||
}
|
||||
// if (process.env.DEBUG) {
|
||||
// debugPlugin(plugins.length)
|
||||
// debugPlugin(plugins.map((p) => (p as Plugin).name))
|
||||
// }
|
||||
}
|
||||
exports.initPlugins = initPlugins;
|
||||
function addPlugin(plugins, plugin, index, type = 'post') {
|
||||
if ((0, shared_1.isString)(index)) {
|
||||
index = plugins.findIndex((plugin) => plugin.name === index);
|
||||
}
|
||||
return plugins.splice(index + (type === 'pre' ? 0 : 1), 0, plugin);
|
||||
}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
import type { Plugin } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '../..';
|
||||
export declare function uniJsonPlugin(options: VitePluginUniResolvedOptions): Plugin;
|
||||
Generated
Vendored
+33
@@ -0,0 +1,33 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.uniJsonPlugin = void 0;
|
||||
const jsonc_parser_1 = require("jsonc-parser");
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const jsonExtRE = /\.json($|\?)(?!commonjs-proxy)/;
|
||||
const SPECIAL_QUERY_RE = /[\?&](?:worker|sharedworker|raw|url)\b/;
|
||||
function uniJsonPlugin(options) {
|
||||
return {
|
||||
name: 'uni:json',
|
||||
transform(code, id) {
|
||||
if (!jsonExtRE.test(id))
|
||||
return null;
|
||||
if (SPECIAL_QUERY_RE.test(id))
|
||||
return null;
|
||||
if (id.endsWith('.json.js'))
|
||||
return null;
|
||||
// preprocess
|
||||
if (code.includes('#endif')) {
|
||||
code = (0, uni_cli_shared_1.preJs)(code, id);
|
||||
}
|
||||
let jsonObj = (0, jsonc_parser_1.parse)(code);
|
||||
if ((0, uni_cli_shared_1.isUniAppLocaleFile)(id)) {
|
||||
jsonObj = jsonObj.common || {};
|
||||
}
|
||||
return {
|
||||
code: JSON.stringify(jsonObj),
|
||||
map: null,
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.uniJsonPlugin = uniJsonPlugin;
|
||||
Generated
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
import type { Plugin, ResolvedConfig } from 'vite';
|
||||
import type { UniPluginFilterOptions } from '.';
|
||||
/**
|
||||
* preprocess css
|
||||
* @param options
|
||||
*/
|
||||
export declare function uniPreCssPlugin(config: ResolvedConfig, options: UniPluginFilterOptions): Plugin;
|
||||
Generated
Vendored
+43
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.uniPreCssPlugin = void 0;
|
||||
const debug_1 = __importDefault(require("debug"));
|
||||
const pluginutils_1 = require("@rollup/pluginutils");
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const debugPre = (0, debug_1.default)('uni:pre-css');
|
||||
// const debugPreTry = debug('uni:pre-css-try')
|
||||
const cssLangs = `\\.(css|less|sass|scss|styl|stylus|postcss)($|\\?)`;
|
||||
const cssLangRE = new RegExp(cssLangs);
|
||||
/**
|
||||
* preprocess css
|
||||
* @param options
|
||||
*/
|
||||
function uniPreCssPlugin(config, options) {
|
||||
const filter = (0, pluginutils_1.createFilter)(options.include, options.exclude);
|
||||
const isNVue = config.nvue;
|
||||
const preJsFile = isNVue ? uni_cli_shared_1.preNVueJs : uni_cli_shared_1.preJs;
|
||||
return {
|
||||
name: 'uni:pre-css',
|
||||
transform(code, id) {
|
||||
if (!cssLangRE.test(id)) {
|
||||
return;
|
||||
}
|
||||
if (!filter(id)) {
|
||||
return;
|
||||
}
|
||||
// debugPreTry(id)
|
||||
if (!code.includes('#endif')) {
|
||||
return;
|
||||
}
|
||||
debugPre(id);
|
||||
return {
|
||||
code: preJsFile(code, id),
|
||||
map: (0, uni_cli_shared_1.withSourcemap)(config) ? this.getCombinedSourcemap() : null,
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.uniPreCssPlugin = uniPreCssPlugin;
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
import type { Plugin } from 'vite';
|
||||
export declare function uniPreVuePlugin(): Plugin;
|
||||
Generated
Vendored
+33
@@ -0,0 +1,33 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.uniPreVuePlugin = void 0;
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
function uniPreVuePlugin() {
|
||||
let isNVue = false;
|
||||
return {
|
||||
name: 'uni:pre-vue',
|
||||
config(config) {
|
||||
isNVue = config.nvue;
|
||||
},
|
||||
async transform(code, id) {
|
||||
const { filename, query } = (0, uni_cli_shared_1.parseVueRequest)(id);
|
||||
if (query.vue) {
|
||||
return;
|
||||
}
|
||||
if (!(process.env.UNI_APP_X === 'true' ? uni_cli_shared_1.X_EXTNAME_VUE : uni_cli_shared_1.EXTNAME_VUE).includes(path_1.default.extname(filename))) {
|
||||
return;
|
||||
}
|
||||
// 清空当前页面已缓存的 filter 信息
|
||||
(0, uni_cli_shared_1.clearMiniProgramTemplateFilter)((0, uni_cli_shared_1.removeExt)((0, uni_cli_shared_1.normalizeMiniProgramFilename)(id, process.env.UNI_INPUT_DIR)));
|
||||
return {
|
||||
code: (0, uni_cli_shared_1.parseVueCode)(code, isNVue).code, // 暂不提供sourcemap,意义不大
|
||||
map: null,
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.uniPreVuePlugin = uniPreVuePlugin;
|
||||
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
import type { Plugin } from 'vite';
|
||||
import type { VitePluginUniResolvedOptions } from '../..';
|
||||
declare const BUILT_IN_MODULES: {
|
||||
'vue-router': string;
|
||||
vuex: string;
|
||||
'vue-i18n': string;
|
||||
'@dcloudio/uni-app': string;
|
||||
'@dcloudio/uni-cloud': string;
|
||||
'@dcloudio/uni-i18n': string;
|
||||
'@dcloudio/uni-shared': string;
|
||||
'@dcloudio/uni-stacktracey': string;
|
||||
'@vue/shared': string;
|
||||
pinia: string;
|
||||
};
|
||||
export type BuiltInModulesKey = keyof typeof BUILT_IN_MODULES;
|
||||
export declare function uniResolveIdPlugin(options: VitePluginUniResolvedOptions): Plugin;
|
||||
export {};
|
||||
Generated
Vendored
+41
@@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.uniResolveIdPlugin = void 0;
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
// const debugResolve = debug('uni:resolve-id')
|
||||
const BUILT_IN_MODULES = {
|
||||
'vue-router': 'dist/vue-router.esm-bundler.js',
|
||||
vuex: 'dist/vuex.esm-bundler.js',
|
||||
'vue-i18n': 'dist/vue-i18n.esm-bundler.js',
|
||||
'@dcloudio/uni-app': 'dist/uni-app.es.js',
|
||||
'@dcloudio/uni-cloud': 'dist/uni-cloud.es.js',
|
||||
'@dcloudio/uni-i18n': 'dist/uni-i18n.es.js',
|
||||
'@dcloudio/uni-shared': 'dist/uni-shared.es.js',
|
||||
'@dcloudio/uni-stacktracey': 'dist/uni-stacktracey.es.js',
|
||||
'@vue/shared': 'dist/shared.esm-bundler.js',
|
||||
pinia: 'dist/pinia.mjs',
|
||||
};
|
||||
function uniResolveIdPlugin(options) {
|
||||
const resolveCache = {};
|
||||
return {
|
||||
name: 'uni:resolve-id',
|
||||
resolveId(id, importer) {
|
||||
const cache = resolveCache[id];
|
||||
if (cache) {
|
||||
// debugResolve('cache', id, cache)
|
||||
return cache;
|
||||
}
|
||||
if (BUILT_IN_MODULES[id]) {
|
||||
return (resolveCache[id] = (0, uni_cli_shared_1.resolveBuiltIn)(path_1.default.join(id, BUILT_IN_MODULES[id])));
|
||||
}
|
||||
if (process.env.UNI_PLATFORM !== 'app') {
|
||||
return (0, uni_cli_shared_1.resolveUTSModule)(id, importer ? path_1.default.dirname(importer) : process.env.UNI_INPUT_DIR);
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.uniResolveIdPlugin = uniResolveIdPlugin;
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
import type { Plugin, ResolvedConfig } from 'vite';
|
||||
import type { UniPluginFilterOptions } from '.';
|
||||
export declare function uniSSRPlugin(config: ResolvedConfig, options: UniPluginFilterOptions): Plugin;
|
||||
Generated
Vendored
+63
@@ -0,0 +1,63 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.uniSSRPlugin = void 0;
|
||||
const debug_1 = __importDefault(require("debug"));
|
||||
const crypto_1 = __importDefault(require("crypto"));
|
||||
const estree_walker_1 = require("estree-walker");
|
||||
const pluginutils_1 = require("@rollup/pluginutils");
|
||||
const magic_string_1 = __importDefault(require("magic-string"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const debugSSR = (0, debug_1.default)('uni:ssr');
|
||||
const KEYED_FUNC_RE = /(ssrRef|shallowSsrRef)/;
|
||||
function uniSSRPlugin(config, options) {
|
||||
const filter = (0, pluginutils_1.createFilter)(options.include, options.exclude);
|
||||
return {
|
||||
name: 'uni:ssr:ref',
|
||||
transform(code, id) {
|
||||
if (!filter(id))
|
||||
return null;
|
||||
if (!KEYED_FUNC_RE.test(code)) {
|
||||
return;
|
||||
}
|
||||
debugSSR('try', id);
|
||||
const ast = this.parse(code);
|
||||
const s = new magic_string_1.default(code);
|
||||
(0, estree_walker_1.walk)(ast, {
|
||||
enter(node) {
|
||||
if (!(0, uni_cli_shared_1.isCallExpression)(node)) {
|
||||
return;
|
||||
}
|
||||
const { callee, arguments: args } = node;
|
||||
if (args.length !== 1) {
|
||||
return;
|
||||
}
|
||||
const name = (0, uni_cli_shared_1.isIdentifier)(callee)
|
||||
? callee.name
|
||||
: (0, uni_cli_shared_1.isMemberExpression)(callee) && (0, uni_cli_shared_1.isIdentifier)(callee.property)
|
||||
? callee.property.name
|
||||
: '';
|
||||
if (name !== 'ssrRef' && name !== 'shallowSsrRef') {
|
||||
return;
|
||||
}
|
||||
const { end } = node;
|
||||
const key = id + '-' + node.end;
|
||||
debugSSR(key, name);
|
||||
s.appendLeft(end - 1, ", '" + createKey(`${id}-${end}`) + "'");
|
||||
},
|
||||
});
|
||||
return {
|
||||
code: s.toString(),
|
||||
map: (0, uni_cli_shared_1.withSourcemap)(config) ? s.generateMap().toString() : null,
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.uniSSRPlugin = uniSSRPlugin;
|
||||
function createKey(source) {
|
||||
const hash = crypto_1.default.createHash('md5');
|
||||
hash.update(source);
|
||||
return hash.digest('base64').toString();
|
||||
}
|
||||
Generated
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
import type { Plugin, ResolvedConfig } from 'vite';
|
||||
import type { UniPluginFilterOptions } from '.';
|
||||
/**
|
||||
* 提供static等目录静态资源加载
|
||||
* @param _options
|
||||
* @param config
|
||||
* @returns
|
||||
*/
|
||||
export declare function uniStaticPlugin(_options: UniPluginFilterOptions, config: ResolvedConfig): Plugin;
|
||||
Generated
Vendored
+44
@@ -0,0 +1,44 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.uniStaticPlugin = void 0;
|
||||
const debug_1 = __importDefault(require("debug"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const utils_1 = require("../../utils");
|
||||
const debugStatic = (0, debug_1.default)('uni:static');
|
||||
/**
|
||||
* 提供static等目录静态资源加载
|
||||
* @param _options
|
||||
* @param config
|
||||
* @returns
|
||||
*/
|
||||
function uniStaticPlugin(_options, config) {
|
||||
const filter = (0, utils_1.createPublicFileFilter)();
|
||||
return {
|
||||
name: 'uni:static',
|
||||
resolveId(id) {
|
||||
if (!config.assetsInclude((0, uni_cli_shared_1.cleanUrl)(id))) {
|
||||
return;
|
||||
}
|
||||
const publicFile = filter(id);
|
||||
if (publicFile) {
|
||||
debugStatic(id);
|
||||
return id;
|
||||
}
|
||||
},
|
||||
async load(id) {
|
||||
if (!config.assetsInclude((0, uni_cli_shared_1.cleanUrl)(id))) {
|
||||
return;
|
||||
}
|
||||
if (filter(id)) {
|
||||
return `export default ${JSON.stringify(fileToUrl(id, config))}`;
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.uniStaticPlugin = uniStaticPlugin;
|
||||
function fileToUrl(id, config) {
|
||||
return config.base + id.slice(1);
|
||||
}
|
||||
Reference in New Issue
Block a user