From 94fbd5b286625ed92468665b782ef6d857f00816 Mon Sep 17 00:00:00 2001 From: gz65555 Date: Tue, 19 Mar 2024 16:33:20 +0800 Subject: [PATCH] feat: support node --- package.json | 11 +++-- pnpm-lock.yaml | 109 ++++++++++++++++++++++++++++++++++++++++++++++ rollup.config.mjs | 18 +++++--- tsconfig.json | 7 +-- 4 files changed, 132 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 2c7437d..78cb139 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,15 @@ "packageManager": "pnpm@8.6.2", "exports": { "node": { - "import": "./dist/node.esm.js", + "import": "./dist/node/index.js", "types": "./types/node/index.d.ts" }, "default": { - "import": "./dist/web.esm.js", + "import": "./dist/web/index.js", "types": "./types/web/index.d.ts" } }, - "types": "types/index.d.ts", + "types": "types/web/index.d.ts", "repository": "github:gz65555/ktx2-encoder", "author": { "name": "Hu Song", @@ -24,7 +24,7 @@ "scripts": { "dev": "vite --host", "docs": "typedoc src/index.ts --plugin typedoc-plugin-markdown --out ./docs", - "build": "tsc && rollup -c", + "build": "tsc -p tsconfig.json && cp -R src/node/basis dist/node", "test": "npm run test:node && npm run test:web", "test:node": "vitest ./test/node.test.ts", "test:web": "vitest --browser.name=chrome ./test/web.test.ts", @@ -46,6 +46,7 @@ "devDependencies": { "@ant-design/icons": "^5.2.5", "@galacean/engine": "^1.1.0-beta.50", + "@rollup/plugin-alias": "^5.1.0", "@rollup/plugin-node-resolve": "^15.0.1", "@swc/core": "^1.3.35", "@types/node": "^20.11.10", @@ -63,6 +64,8 @@ "rollup": "^3", "rollup-plugin-swc3": "^0.11.0", "sharp": "^0.33.2", + "tsc-alias": "^1.8.8", + "tsconfig-paths": "^4.2.0", "typedoc": "^0.24.8", "typedoc-plugin-markdown": "^3.15.3", "typescript": "^5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f603ef3..9026459 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,6 +19,9 @@ devDependencies: '@galacean/engine': specifier: ^1.1.0-beta.50 version: 1.1.1 + '@rollup/plugin-alias': + specifier: ^5.1.0 + version: 5.1.0(rollup@3.29.4) '@rollup/plugin-node-resolve': specifier: ^15.0.1 version: 15.2.3(rollup@3.29.4) @@ -70,6 +73,12 @@ devDependencies: sharp: specifier: ^0.33.2 version: 0.33.2 + tsc-alias: + specifier: ^1.8.8 + version: 1.8.8 + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 typedoc: specifier: ^0.24.8 version: 0.24.8(typescript@5.4.2) @@ -1062,6 +1071,19 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@rollup/plugin-alias@5.1.0(rollup@3.29.4): + resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 3.29.4 + slash: 4.0.0 + dev: true + /@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} @@ -1755,6 +1777,11 @@ packages: resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} dev: true + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -2296,6 +2323,13 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + /dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -2702,6 +2736,18 @@ packages: engines: {node: '>=4'} dev: true + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + /got@12.6.1: resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} @@ -2798,6 +2844,11 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} dev: true @@ -3231,6 +3282,11 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /mylas@2.1.13: + resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} + engines: {node: '>=12.0.0'} + dev: true + /n12@1.8.26: resolution: {integrity: sha512-BUTP59AmN33pLdGLkKphoxhXD8eLi3YCCuEmUXiIPGdmujKEJmyG1T3WL4N7RPr3+t4FdTeGLyejBq/WL0sCWw==} dev: true @@ -3397,6 +3453,11 @@ packages: minipass: 7.0.4 dev: true + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + /pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: true @@ -3430,6 +3491,13 @@ packages: pathe: 1.1.2 dev: true + /plimit-lit@1.6.1: + resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} + engines: {node: '>=12'} + dependencies: + queue-lit: 1.5.2 + dev: true + /postcss@8.4.35: resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} @@ -3554,6 +3622,11 @@ packages: resolution: {integrity: sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==} dev: true + /queue-lit@1.5.2: + resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} + engines: {node: '>=12'} + dev: true + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -4396,6 +4469,16 @@ packages: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -4509,6 +4592,11 @@ packages: ansi-regex: 6.0.1 dev: true + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -4633,6 +4721,27 @@ packages: resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} dev: true + /tsc-alias@1.8.8: + resolution: {integrity: sha512-OYUOd2wl0H858NvABWr/BoSKNERw3N9GTi3rHPK8Iv4O1UyUXIrTTOAZNHsjlVpXFOhpJBVARI1s+rzwLivN3Q==} + hasBin: true + dependencies: + chokidar: 3.6.0 + commander: 9.5.0 + globby: 11.1.0 + mylas: 2.1.13 + normalize-path: 3.0.0 + plimit-lit: 1.6.1 + dev: true + + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} diff --git a/rollup.config.mjs b/rollup.config.mjs index 1aee80e..51e4926 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,8 +1,9 @@ import resolve from "@rollup/plugin-node-resolve"; import { swc, defineRollupSwcOption, minify } from "rollup-plugin-swc3"; +import alias from "@rollup/plugin-alias"; const plugins = [ - resolve({ extensions: [".ts"] }), + resolve({ extensions: [".ts"], browser: false }), swc( defineRollupSwcOption({ include: /\.[mc]?[jt]sx?$/, @@ -14,10 +15,13 @@ const plugins = [ }, sourceMaps: true }) - ), - minify({ - module: true - }) + ) + // alias({ + // entries: [{ find: "@basis/basis_encoder.js", replacement: "../libs/basis_encoder.js" }] + // }) + // minify({ + // module: true + // }) ]; export default [ @@ -34,10 +38,12 @@ export default [ { input: "./src/node/index.ts", plugins, + external: ["@basis/basis_encoder.js"], output: [ { file: "dist/node.esm.js", - format: "es" + format: "es", + inlineDynamicImports: true } ] } diff --git a/tsconfig.json b/tsconfig.json index 5b8352f..e6a58bb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,7 @@ /* Bundler mode */ "moduleResolution": "bundler", - "allowImportingTsExtensions": true, + "allowImportingTsExtensions": false, "resolveJsonModule": true, "isolatedModules": true, "jsx": "react-jsx", @@ -19,9 +19,10 @@ "noUnusedParameters": false, "typeRoots": ["./node_modules/@webgpu/types", "./node_modules/@types"], "noFallthroughCasesInSwitch": true, - "emitDeclarationOnly": true, + "emitDeclarationOnly": false, "declaration": true, - "outDir": "types" + "declarationDir": "types", + "outDir": "dist" }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }]