UNPKG

@stellaris/vite-plugin-tencent-oss

Version:

Upload the production files bundled in the project to Tencent CSS, except for html

125 lines (106 loc) 3.61 kB
// 简单的测试框架实现 const describe = (name, fn) => { console.log(`\n📝 ${name}`); fn(); }; const it = (name, fn) => { try { fn(); console.log(` ✅ ${name}`); } catch (error) { console.log(` ❌ ${name}`); console.log(` ${error.message}`); } }; const expect = (actual) => ({ toEqual: (expected) => { if (JSON.stringify(actual) !== JSON.stringify(expected)) { throw new Error( `Expected ${JSON.stringify(expected)}, but got ${JSON.stringify( actual )}` ); } }, }); import path from "path"; import { minimatch } from "minimatch"; // 测试文件分离逻辑 function separateFilesByGlobs(files, lastCommitGlobs, outDirPath) { if (!lastCommitGlobs || lastCommitGlobs.length === 0) { return { normalFiles: files, lastCommitFiles: [] }; } const normalFiles = []; const lastCommitFiles = []; for (const fileFullPath of files) { const relativePath = path.relative(outDirPath, fileFullPath); const shouldBeLastCommit = lastCommitGlobs.some((pattern) => { return ( minimatch(relativePath, pattern) || minimatch(fileFullPath, pattern) ); }); if (shouldBeLastCommit) { lastCommitFiles.push(fileFullPath); } else { normalFiles.push(fileFullPath); } } return { normalFiles, lastCommitFiles }; } describe("separateFilesByGlobs", () => { const outDirPath = "/project/dist"; const testFiles = [ "/project/dist/index.html", "/project/dist/assets/index.123.js", "/project/dist/assets/vendor.456.js", "/project/dist/assets/style.789.css", "/project/dist/favicon.ico", ]; it("没有 lastCommitGlobs 时应该返回所有文件为普通文件", () => { const result = separateFilesByGlobs(testFiles, [], outDirPath); expect(result.normalFiles).toEqual(testFiles); expect(result.lastCommitFiles).toEqual([]); }); it("应该正确分离 HTML 文件", () => { const lastCommitGlobs = ["**/*.html"]; const result = separateFilesByGlobs(testFiles, lastCommitGlobs, outDirPath); expect(result.normalFiles).toEqual([ "/project/dist/assets/index.123.js", "/project/dist/assets/vendor.456.js", "/project/dist/assets/style.789.css", "/project/dist/favicon.ico", ]); expect(result.lastCommitFiles).toEqual(["/project/dist/index.html"]); }); it("应该正确分离多种类型的文件", () => { const lastCommitGlobs = ["**/*.html", "**/index.*.js"]; const result = separateFilesByGlobs(testFiles, lastCommitGlobs, outDirPath); expect(result.normalFiles).toEqual([ "/project/dist/assets/vendor.456.js", "/project/dist/assets/style.789.css", "/project/dist/favicon.ico", ]); expect(result.lastCommitFiles).toEqual([ "/project/dist/index.html", "/project/dist/assets/index.123.js", ]); }); it("应该处理复杂的 glob 模式", () => { const lastCommitGlobs = ["**/assets/*.css", "*.ico"]; const result = separateFilesByGlobs(testFiles, lastCommitGlobs, outDirPath); expect(result.normalFiles).toEqual([ "/project/dist/index.html", "/project/dist/assets/index.123.js", "/project/dist/assets/vendor.456.js", ]); expect(result.lastCommitFiles).toEqual([ "/project/dist/assets/style.789.css", "/project/dist/favicon.ico", ]); }); it("应该处理空的文件列表", () => { const result = separateFilesByGlobs([], ["**/*.html"], outDirPath); expect(result.normalFiles).toEqual([]); expect(result.lastCommitFiles).toEqual([]); }); });