How you can ensure your TypeScript/Node.js code works across platforms (Windows, Linux, WSL) with all these path notations:

1. Use Node’s path Module

Node.js provides the path module to handle file paths in a cross-platform way.

  • path.join() and path.resolve() will use the correct separator for the current OS.
  • path.normalize() can help convert mixed slashes to the platform’s standard.

Example:

import * as path from 'path';  
  
const linuxPath = '/mnt/d/xxx';  
const windowsPath = 'd:\\xxx';  
const wslPath = 'd:/xxx';  
  
// Normalize all paths  
console.log(path.normalize(linuxPath));   // On Windows: '\\mnt\\d\\xxx', On Linux: '/mnt/d/xxx'  
console.log(path.normalize(windowsPath)); // On Windows: 'd:\\xxx', On Linux: 'd:\\xxx'  
console.log(path.normalize(wslPath));     // On Windows: 'd:\\xxx', On Linux: 'd:/xxx'  

2. Accept All Notations

If your app receives paths from users or config files, you may want to normalize slashes so your code can work with any notation.

function toPlatformPath(input: string): string {  
  // Replace all backslashes with forward slashes  
  let normalized = input.replace(/\\/g, '/');  
  // If on Windows, convert forward slashes to backslashes  
  if (process.platform === 'win32') {  
    normalized = normalized.replace(/\//g, '\\');  
  }  
  return normalized;  
}  

3. Special Case: WSL Paths

  • /mnt/d/xxx is a WSL mount path.
  • d:/xxx is a Windows path (can be used in WSL bash).
  • d:\xxx is a native Windows path.

If you need to convert between WSL and Windows paths, consider using wslpath (from within WSL), or handle mapping yourself.

4. Best Practice

  • Always use the path module for joining, resolving, and normalizing paths.
  • Avoid hardcoding separators (/ or \) in your code.
  • If you need to display or store paths, consider storing them in POSIX style (/) and converting as needed.

Example Function

import * as path from 'path';  
  
function safeJoin(...segments: string[]): string {  
  return path.join(...segments);  
}  
  
// Usage:  
const myFile = safeJoin('mnt', 'd', 'xxx', 'file.txt');  
console.log(myFile); // Will use correct separator for OS  

Summary Table

Path ExamplePlatform
/mnt/d/xxxLinux/WSL
d:\xxxWindows
d:/xxxWindows/WSL

RULE:

Always use Node’s path module for all file path operations and normalize user input.