bundle-browser-runtime.mjs 938 B

123456789101112131415161718
  1. import {cp,mkdir,rm} from 'node:fs/promises'
  2. import {createRequire} from 'node:module'
  3. import {dirname,join,relative,sep} from 'node:path'
  4. export const browserRuntimeExternals=['playwright','playwright-core']
  5. /** Playwright loads assets relative to its package directory and cannot be
  6. * flattened by esbuild. Copy its runtime packages, never browser binaries or
  7. * user profiles. Chromium is explicitly installed on the destination host. */
  8. export async function bundleBrowserRuntime(directory){
  9. const require=createRequire(import.meta.url),modules=join(directory,'node_modules')
  10. await mkdir(modules,{recursive:true})
  11. for(const name of browserRuntimeExternals){
  12. const source=dirname(require.resolve(`${name}/package.json`)),target=join(modules,name)
  13. await rm(target,{recursive:true,force:true})
  14. await cp(source,target,{recursive:true,filter:path=>!relative(source,path).split(sep).includes('.local-browsers')})
  15. }
  16. }