Skip to content

Commit eb47163

Browse files
fix: add cross-platform build support for Windows (replace rm/cp with cross-platform alternatives) (#1054)
* fix: add cross-platform build support for Windows - Replace rm -rf with rimraf for cross-platform directory cleanup - Add Node.js copy script to replace Unix cp command - Makes build process work on Windows * chore: update package-lock.json for rimraf dependency - Adds rimraf to package-lock.json for reproducible installs - Ensures npm ci works correctly This fixes the CI failure reported in PR review. * fix(build): use rimraf v5 for Node 18 compatibility - Use rimraf@5.0.5 (supports Node 14+) instead of v6 - Add copy-assets.js for cross-platform file copying - Maintains Windows compatibility while supporting Node 18 This PR now works with the project's Node 18 requirement. * fix: replace rimraf with node stdlib clean for engine compat rimraf@5/6 requires Node >=20 via path-scurry@2, but engines say >=18. Replace with core/scripts/clean.js using fs.rmSync. Also strip UTF-8 BOM from core/scripts/copy-assets.js and delete the duplicate root-level scripts/copy-assets.js. --------- Co-authored-by: Samuel EF. Tinnerholm <samuel.tinnerholm@gmail.com>
1 parent 4eab0aa commit eb47163

4 files changed

Lines changed: 33 additions & 7 deletions

File tree

core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
"test": "test"
2323
},
2424
"scripts": {
25-
"clean": "rm -rf dist",
25+
"clean": "node scripts/clean.js",
2626
"prebuild": "npm run clean",
27-
"build": "tsc && cp src/server/openapi.yaml dist/server/openapi.yaml && cp src/server/method-verbs.json dist/server/method-verbs.json",
27+
"build": "tsc && node scripts/copy-assets.js",
2828
"bundle:server": "npm run build && esbuild dist/server/index.js --bundle --platform=node --target=node18 --outfile=dist/server/bundled.js --define:__PMXT_VERSION__=\\\"$npm_package_version\\\" --external:fsevents --external:@opinion-labs/opinion-clob-sdk",
2929
"test": "jest -c jest.config.js",
3030
"server": "tsx watch src/server/index.ts",
@@ -55,11 +55,11 @@
5555
"cors": "^2.8.5",
5656
"dotenv": "^17.2.3",
5757
"ethers": "^5.8.0",
58-
"viem": "^2.0.0",
5958
"express": "^5.2.1",
6059
"isows": "^1.0.6",
6160
"msgpackr": "^2.0.1",
6261
"polymarket-us": "0.1.1",
62+
"viem": "^2.0.0",
6363
"ws": "^8.18.0"
6464
},
6565
"devDependencies": {

core/scripts/clean.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
const fs = require("fs");
2+
3+
const target = "dist";
4+
5+
fs.rmSync(target, { recursive: true, force: true });
6+
console.log("Cleaned " + target);

core/scripts/copy-assets.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const fs = require("fs");
2+
const path = require("path");
3+
4+
const assets = [
5+
{ src: "src/server/openapi.yaml", dest: "dist/server/openapi.yaml" },
6+
{ src: "src/server/method-verbs.json", dest: "dist/server/method-verbs.json" }
7+
];
8+
9+
assets.forEach(asset => {
10+
const destDir = path.dirname(asset.dest);
11+
if (!fs.existsSync(destDir)) {
12+
fs.mkdirSync(destDir, { recursive: true });
13+
}
14+
fs.copyFileSync(asset.src, asset.dest);
15+
console.log("Copied " + asset.src + " -> " + asset.dest);
16+
});

package-lock.json

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)