notarize.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * notarize.js
  3. *
  4. * @see https://oldj.net/blog/2019/12/29/electron-builder-sign-and-notarize-for-macos
  5. */
  6. require('dotenv').config()
  7. const { notarize } = require('electron-notarize')
  8. exports.default = async function notarizing(context) {
  9. const appName = context.packager.appInfo.productFilename
  10. const { electronPlatformName, appOutDir } = context
  11. console.log(`in notarize, ${electronPlatformName}...`)
  12. if (electronPlatformName !== 'darwin') {
  13. return
  14. }
  15. if (process.env.MAKE_FOR === 'dev' || process.env.SKIP_NOTARIZATION) {
  16. console.log('skip notarization.')
  17. return // for dev, skip notarization
  18. }
  19. let appPath = `${appOutDir}/${appName}.app`
  20. let { appleId, appBundleId, ascProvider, appleIdPassword } = process.env
  21. if (!appleIdPassword) {
  22. appleIdPassword = `@keychain:Apple Notarize: ${appleId}`
  23. }
  24. if (!appleId || !appBundleId || !ascProvider || !appleIdPassword) {
  25. console.log('Not notarized.')
  26. return
  27. }
  28. console.log('Start notarizing...')
  29. await notarize({
  30. appBundleId,
  31. appPath,
  32. ascProvider,
  33. appleId,
  34. appleIdPassword,
  35. })
  36. console.log('Notarize done.')
  37. }