Skip to content

Commit 8d73fe8

Browse files
committed
fix(publish): bypass napi prepublish, publish with pnpm --no-git-checks
napi prepublish wraps 'pnpm publish' via execSync which swallows pnpm's real error output (only prints 'Internal Error: Command failed'), and the wrapped pnpm cannot take --no-git-checks. Also pnpm does not look up parent-dir .npmrc, so writing git-checks=false to napi/.npmrc was not read when pnpm ran in the per-platform subpackage dir. Publish manually instead: sync optionalDependencies (napi prepublish's job) via a node snippet, then 'pnpm publish --provenance --no-git-checks' each subpackage and the main package (--ignore-scripts skips prepublishOnly: napi prepublish). pnpm output now propagates, so real errors are visible. No GitHub Release is created anymore.
1 parent 5f60ed9 commit 8d73fe8

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

.github/workflows/publish.yml

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,23 @@ jobs:
250250
run: pnpm run artifacts
251251

252252
- name: Publish
253-
env:
254-
GITHUB_TOKEN: ${{ github.token }}
255253
run: |
256-
npm config set provenance true
257-
echo "git-checks=false" >> .npmrc
258-
npm publish --access public
254+
node -e "
255+
const fs = require('fs');
256+
const pkg = JSON.parse(fs.readFileSync('package.json','utf8'));
257+
const opt = {};
258+
for (const dir of fs.readdirSync('npm')) {
259+
const p = 'npm/' + dir + '/package.json';
260+
if (fs.existsSync(p)) {
261+
const sub = JSON.parse(fs.readFileSync(p,'utf8'));
262+
opt[sub.name] = pkg.version;
263+
}
264+
}
265+
pkg.optionalDependencies = opt;
266+
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
267+
console.log('synced optionalDependencies:', Object.keys(opt).length, 'packages');
268+
"
269+
for dir in npm/*/; do
270+
(cd "$dir" && pnpm publish --provenance --no-git-checks --access public)
271+
done
272+
pnpm publish --provenance --no-git-checks --access public --ignore-scripts

0 commit comments

Comments
 (0)