diff --git a/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts b/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts index e6440d1b..1d517119 100644 --- a/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts +++ b/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts @@ -9,7 +9,6 @@ import { SHARED_DESCRIPTION } from './lib/constants'; import { createMemoizedPromise } from './lib/memo-promise'; import * as yaml from 'yaml'; import { appendArrayInPlace } from './lib/append-array-in-place'; -import { writeFile } from './lib/misc'; import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR, SOURCE_DIR } from './constants/dir'; import { RulesetOutput } from './lib/create-file'; @@ -83,8 +82,8 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as ], path.resolve(OUTPUT_MODULES_DIR, 'sukka_local_dns_mapping.sgmodule') ), - writeFile( - path.join(OUTPUT_INTERNAL_DIR, 'clash_nameserver_policy.yaml'), + compareAndWriteFile( + span, yaml.stringify( { dns: { @@ -116,7 +115,8 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as ) }, { version: '1.1' } - ) + ).split('\n'), + path.join(OUTPUT_INTERNAL_DIR, 'clash_nameserver_policy.yaml') ) ]); }); diff --git a/Build/build-public.ts b/Build/build-public.ts index 61dca669..7cd9c0c6 100644 --- a/Build/build-public.ts +++ b/Build/build-public.ts @@ -9,6 +9,7 @@ import type { TreeType, TreeTypeArray } from './lib/tree-dir'; import { OUTPUT_MOCK_DIR, OUTPUT_MODULES_DIR, PUBLIC_DIR, ROOT_DIR } from './constants/dir'; import { mkdirp, writeFile } from './lib/misc'; import picocolors from 'picocolors'; +import { compareAndWriteFile } from './lib/create-file'; const mockDir = path.join(ROOT_DIR, 'Mock'); const modulesDir = path.join(ROOT_DIR, 'Modules'); @@ -46,6 +47,19 @@ export const buildPublic = task(require.main === module, __filename)(async (span .traceChild('generate index.html') .traceAsyncFn(() => treeDir(PUBLIC_DIR).then(generateHtml)); + await compareAndWriteFile( + span, + [ + '/*', + ' cloudflare-cdn-cache-control: public, max-age=150, stale-while-revalidate=60, stale-if-error=30', + 'https://:project.pages.dev/*', + ' X-Robots-Tag: noindex', + '/Modules/*', + ' content-type: text/plain; charset=utf-8' + ], + path.join(PUBLIC_DIR, '_headers') + ); + return writeFile(path.join(PUBLIC_DIR, 'index.html'), html); }); diff --git a/Build/build-sgmodule-always-realip.ts b/Build/build-sgmodule-always-realip.ts index 19996115..d0cd5def 100644 --- a/Build/build-sgmodule-always-realip.ts +++ b/Build/build-sgmodule-always-realip.ts @@ -3,7 +3,6 @@ import { task } from './trace'; import { compareAndWriteFile } from './lib/create-file'; import { DIRECTS, LANS } from '../Source/non_ip/direct'; import * as yaml from 'yaml'; -import { writeFile } from './lib/misc'; import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR } from './constants/dir'; import { appendArrayInPlace } from './lib/append-array-in-place'; @@ -62,8 +61,8 @@ export const buildAlwaysRealIPModule = task(require.main === module, __filename) ], path.resolve(OUTPUT_MODULES_DIR, 'sukka_common_always_realip.sgmodule') ), - writeFile( - path.join(OUTPUT_INTERNAL_DIR, 'clash_fake_ip_filter.yaml'), + compareAndWriteFile( + span, yaml.stringify( { dns: { @@ -75,7 +74,8 @@ export const buildAlwaysRealIPModule = task(require.main === module, __filename) } }, { version: '1.1' } - ) + ).split('\n'), + path.join(OUTPUT_INTERNAL_DIR, 'clash_fake_ip_filter.yaml') ) ]); });