gemini_watermark_cleaner/build.js

71 lines
2.2 KiB
JavaScript
Raw Normal View History

2025-12-20 04:31:57 +00:00
import * as esbuild from 'esbuild';
import { cp, mkdir } from 'fs/promises';
const userscriptBanner = `// ==UserScript==
// @name Gemini NanoBanana Watermark Remover
// @name:zh-CN Gemini NanoBanana 图片水印移除
// @namespace https://github.com/journey-ad
// @version 0.1.2
2025-12-20 04:31:57 +00:00
// @description Automatically removes watermarks from Gemini AI generated images
// @description:zh-CN 自动移除 Gemini AI 生成图像中的水印
// @icon https://www.google.com/s2/favicons?domain=gemini.google.com
// @author journey-ad
// @license MIT
2025-12-20 06:25:43 +00:00
// @match https://gemini.google.com/app
2025-12-20 04:31:57 +00:00
// @match https://gemini.google.com/app/*
// @match https://gemini.google.com/u/*/app
// @match https://gemini.google.com/u/*/app/*
2025-12-20 04:31:57 +00:00
// @grant GM_xmlhttpRequest
// @run-at document-start
// ==/UserScript==
`;
async function build() {
console.log(`Start Build... ${process.env.NODE_ENV === 'production' ? 'production' : 'development'}\r\n`);
2025-12-20 06:11:23 +00:00
// Build website - app.js
2025-12-20 04:31:57 +00:00
console.log('Building: dist/app.js');
await esbuild.build({
entryPoints: ['src/app.js'],
bundle: true,
format: 'esm',
outfile: 'dist/app.js',
2025-12-20 05:37:52 +00:00
loader: { '.png': 'dataurl' },
2025-12-20 04:31:57 +00:00
publicPath: '/',
minify: process.env.NODE_ENV === 'production'
});
2025-12-20 06:11:23 +00:00
// Build website - i18n.js
2025-12-20 04:31:57 +00:00
console.log('Building: dist/i18n.js');
await esbuild.build({
entryPoints: ['src/i18n.js'],
bundle: true,
format: 'esm',
outfile: 'dist/i18n.js',
minify: process.env.NODE_ENV === 'production'
});
2025-12-20 06:11:23 +00:00
// Build userscript
2025-12-20 04:31:57 +00:00
console.log('Building: dist/userscript/gemini-watermark-remover.user.js');
await mkdir('dist/userscript', { recursive: true });
await esbuild.build({
entryPoints: ['src/userscript/index.js'],
bundle: true,
format: 'iife',
outfile: 'dist/userscript/gemini-watermark-remover.user.js',
banner: { js: userscriptBanner },
loader: { '.png': 'dataurl' },
minify: false
});
2025-12-20 06:11:23 +00:00
// Copy static files
2025-12-20 04:31:57 +00:00
console.log('Copying: src/i18n -> dist/i18n');
await cp('src/i18n', 'dist/i18n', { recursive: true });
console.log('Copying: public -> dist');
await cp('public', 'dist', { recursive: true });
console.log('\r\n✓ Build complete');
}
build().catch(console.error);