hunk.code_window:   /ExtensionLoadWarning/,
   ];
   // these are set before calling `config`, so we have a chance to override them
   try {
     const devJson = readFileSync(
       path.resolve(electronDir, './dev.json'),
       'utf-8'
     );
     const devEnv = JSON.parse(devJson);
     Object.assign(process.env, devEnv);
   } catch (err) {
     console.warn(
       `Could not read dev.json. Some functions may not work as expected.`
     );
   }
   /** @type {ChildProcessWithoutNullStreams | null} */
   let spawnProcess = null;
   function spawnOrReloadElectron() {
  
hunk.labels: keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep
hunk.file_path: apps/electron/scripts/dev.mjs
hunk.type: replace
file: # AFFiNE Electron App
  
  ## Development
  
  To run AFFiNE Desktop Client Application locally, run the following commands:
  
  ```sh
  # in repo root
  yarn install
  yarn workspace @affine/native build
  yarn dev
  
  # in apps/electron
  yarn generate-assets
  yarn dev # or yarn prod for production build
  ```
  
  ## Troubleshooting
  
  ## Credits
  
  Most of the boilerplate code is generously borrowed from the following
  
  - [vite-electron-builder](https://github.com/cawa-93/vite-electron-builder)
  - [Turborepo basic example](https://github.com/vercel/turborepo/tree/main/examples/basic)
  - [yerba](https://github.com/t3dotgg/yerba)
  