index.js 762 B

123456789101112131415161718192021222324252627282930313233343536
  1. import process from 'node:process';
  2. import os from 'node:os';
  3. import fs from 'node:fs';
  4. import isInsideContainer from 'is-inside-container';
  5. const isWsl = () => {
  6. if (process.platform !== 'linux') {
  7. return false;
  8. }
  9. if (os.release().toLowerCase().includes('microsoft')) {
  10. if (isInsideContainer()) {
  11. return false;
  12. }
  13. return true;
  14. }
  15. try {
  16. if (fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')) {
  17. return !isInsideContainer();
  18. }
  19. } catch {}
  20. // Fallback for custom kernels: check WSL-specific paths.
  21. if (
  22. fs.existsSync('/proc/sys/fs/binfmt_misc/WSLInterop')
  23. || fs.existsSync('/run/WSL')
  24. ) {
  25. return !isInsideContainer();
  26. }
  27. return false;
  28. };
  29. export default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();