You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab流水线中用npm publish部署Electron打包产物到包仓库

用npm publish替代通用包上传并自定义打包步骤

要实现用npm publish发布electron打包产物并使用npm dist-tag功能,核心是利用npm的生命周期脚本替换默认build步骤,同时调整流水线和package.json配置,具体操作如下:

1. 修改package.json配置

在项目的package.json中添加两个关键配置:

  • 绑定打包命令到prepublishOnly生命周期钩子(仅在npm publish前触发,不会影响npm install)
  • 配置files字段确保打包产物被包含在npm包中
{
  "scripts": {
    // 保留原有脚本...
    "prepublishOnly": "npm run package:windows"
  },
  "files": [
    "electron-dist/**/*"
  ],
  // 可选:如果需要将exe作为全局可执行命令,添加bin字段
  "bin": "./electron-dist/moniteur-virtuel.exe"
}

2. 调整GitLab流水线步骤

修改原流水线脚本,移除通用包上传的Invoke-RestMethod步骤,替换为版本号修改、npm publish和标签设置:

- nvm use 18.20.3
- $Version = node -p "require('./package.json').version"
- $FullVersion = $Version + $BETA_RELEASE_TAG
- $FullFileName = 'moniteur-virtuel.setup.' + $Version + '.exe'
- $FullFilePath = (Get-Location).Path + '\electron-dist\' + $FullFileName
- (Get-Content .\src\polyfills.auto.ts) | Set-Content .\src\polyfills.ts
- npm run update-scope # met a jour le package-lock.json
- npm install
- npm run list-scope # list les versions utilises
# 更新package.json中的版本号为带beta标签的完整版本
- (Get-Content .\package.json) | ForEach-Object { $_ -replace '"version": "' + $Version + '"', '"version": "' + $FullVersion + '"' } | Set-Content .\package.json
# 配置npm仓库权限
- if (Test-Path .npmrc) { Remove-Item .npmrc; }
- echo "strict-ssl = false" > .npmrc
- echo "@cossilys:registry=https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/" >> .npmrc
- echo "//${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}" >> .npmrc
- cat .npmrc
# 执行npm publish,自动触发prepublishOnly中的打包命令
- npm publish --access public # 私有包可省略--access public参数
# 为发布版本添加自定义dist-tag
- npm dist-tag add @cossilys/moniteur-virtuel@$FullVersion $FullVersion

关键说明

  • prepublishOnly是npm官方推荐的发布前钩子,只会在执行npm publish时触发,避免了prepare钩子在npm install时也执行打包的问题。
  • 必须更新package.json的version字段为$FullVersion,因为npm publish完全依赖该字段确定发布版本,否则标签与版本会不匹配。
  • files字段是确保electron打包生成的exe文件被包含在发布包中的关键,若有其他需要发布的文件,可追加到数组中。

内容的提问来源于stack exchange,提问作者User.Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:12:48