<#605 Feat/optional arch specific binaries> Pull r...
# pact-js-development
g
#605 Feat/optional arch specific binaries Pull request opened by YOU54F The following PR will fix #602 support libpact_ffi & pact-js-core node bindings to be published in seperate npm packages. these are segmented by
${os}-{arch}-{libc}
users should not need to require these automatically, npm should determine the required optional dependency to download at install time. supported_platforms
Copy code
"@pact-foundation/pact-core-darwin-arm64": "16.0.0",
"@pact-foundation/pact-core-darwin-x64": "16.0.0",
"@pact-foundation/pact-core-linux-arm64-glibc": "16.0.0",
"@pact-foundation/pact-core-linux-arm64-musl": "16.0.0",
"@pact-foundation/pact-core-linux-x64-glibc": "16.0.0",
"@pact-foundation/pact-core-linux-x64-musl": "16.0.0",
"@pact-foundation/pact-core-windows-x64": "16.0.0"
CI Improvements Significant build time reductions, by reducing the times when prebuilds are created. • libpact_ffi node bindings as prebuilds will only be created on master • test suite will download the latest release prebuilds via gh cli, if not on a master branch This could be further improved to • build node bindings & prebuilds, on pull requests, where • the libpact_ffi version has changed • the code in
native
or the
bindings.gyp
changes • allow top level job conditional skipping. • it appears you cannot skip an entire job based on a condition, which is a pre-requisite for another job, so you have to nested the condition at each step level. Testing Consumed in pact-js, via scoped publish, shown tested in following forked PR • YOU54F/pact-js#3 Published for testing "@you54f/pact": "14.0.1", "@you54f/pact-core": "17.0.4", "@you54f/pact-core-darwin-arm64": "17.0.4", "@you54f/pact-core-darwin-x64": "17.0.4", "@you54f/pact-core-linux-arm64-glibc": "17.0.4", "@you54f/pact-core-linux-arm64-musl": "17.0.4", "@you54f/pact-core-linux-x64-glibc": "17.0.4", "@you54f/pact-core-linux-x64-musl": "17.0.4", "@you54f/pact-core-windows-x64": "17.0.4", Tested with • npm (works from node 16+) • yarn pnp (berry) - latest stable (works from node 18+) • pnpm (works from node 18+) matrix: node-version: [16, 18, 20, 22] npm_package_manager: - yarn - pnpm - npm os: [ macos-13, macos-15, ubuntu-24.04, ubuntu-24.04-arm, windows-latest ] exclude: - npm_package_manager: yarn node-version: 16 - npm_package_manager: pnpm node-version: 16 See example workflow / simple project https://github.com/YOU54F/pact-js-packagers-test/blob/main/.github/workflows/test.yml pact-foundation/pact-js-core