Skip to content

Vite 插件 ​

在 vite.config.ts 中从 @makoojs/cli 导入插件。使用步骤见项目配置,终端操作见本地开发。

makoo() ​

根据 Makoo 配置创建 Vite plugins。

类型 ​

ts
function makoo(options: MakooOptions): Plugin[];

参数 ​

options 使用 MakooOptions。

返回值 ​

返回一个 Plugin[]。

示例 ​

ts
import { defineConfig } from 'vite';
import { makoo } from '@makoojs/cli';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
	plugins: [
		vue(),
		makoo({
			entry: './src/main.ts',
			app: {
				name: 'my-script',
				version: '0.0.1'
			},
			monkey: {
				userscript: {
					match: ['https://example.com/*']
				}
			}
		})
	]
});

makooDev() ​

ts
function makooDev(): Plugin;

启用开发时的 Runtime 连接和任务状态查看,无需参数。与 makoo() 一起放进 plugins,然后用 makoo dev 启动。它在开发服务中启用。

makoo() 负责 userscript 构建和安装入口;makooDev() 负责开发任务查看。两者分别添加。

cdn ​

从 vite-plugin-monkey 重新导出的 CDN 配置生成器。

类型 ​

ts
type CdnFactory = (
	exportVarName?: string,
	pathname?: string
) => [string, ModuleToUrlFc];

const cdn: {
	jsdelivr: CdnFactory;
	jsdelivrFastly: CdnFactory;
	unpkg: CdnFactory;
	cdnjs: CdnFactory;
	zhimg: CdnFactory;
	elemecdn: CdnFactory;
	bdstatic: CdnFactory;
	npmmirror: CdnFactory;
	bootcdn: CdnFactory;
	staticfile: CdnFactory;
};

bootcdn 和 staticfile 由 vite-plugin-monkey 标记为 deprecated。

配置类型 ​

MakooOptions ​

ts
type MakooOptions = CliConfig & {
	root?: string;
};

CliConfig ​

ts
type CliConfig = {
	entry: string;
	app: AppConfig;
	monkey: MonkeyConfig;
};

AppConfig ​

ts
type AppConfig = {
	name: string;
	version: string;
	description?: string;
};

MonkeyConfig ​

ts
type MonkeyConfig = {
	userscript?: Omit<MonkeyUserScript, 'name' | 'version' | 'description'>;
	align?: number | false;
	generate?: (options: {
		userscript: string;
		mode: 'serve' | 'build' | 'meta';
	}) => string | Promise<string>;
	styleImport?: boolean;
	server?: MonkeyServerConfig;
	build?: MonkeyBuildConfig;
};

MonkeyServerConfig ​

ts
type MonkeyServerConfig = {
	open?: boolean;
	prefix?: string | ((name: string) => string) | false;
};

MonkeyBuildConfig ​

ts
type MonkeyBuildConfig = {
	fileName?: string;
	metaFileName?: string | boolean | ((fileName: string) => string);
	externalGlobals?: ExternalGlobals;
	autoGrant?: boolean;
	externalResource?: ExternalResource;
	systemjs?: 'inline' | ((
		version: string,
		packageName: string,
		importName?: string,
		resolveName?: string
	) => string);
	cssSideEffects?: string | ((css: string) => void);
};

默认值与字段约束 ​

字段默认值或约束
root当前工作目录
entry必填;相对 root 解析
app.name / app.version必填;控制同名 userscript 字段
app.description可选;控制 userscript description
monkey必填,可传空对象
monkey.align2
monkey.styleImporttrue
monkey.server.openWindows/macOS 为 true,其他平台为 false
monkey.server.prefix'server:'
monkey.build.fileName${app.name}.user.js
monkey.build.metaFileNamefalse;true 时由脚本名生成 .meta.js 名称
monkey.build.autoGranttrue

monkey.userscript 不接受 name、version、description;这些字段统一通过 app 设置。