How can I convert a windows path to posix path using node path

前端 未结 5 900
心在旅途
心在旅途 2021-01-03 23:28

I\'m developing on windows, but need to know how to convert a windows path (with backslashes \\) into a POSIX path with forward slashes (/)?

<
5条回答
  •  死守一世寂寞
    2021-01-03 23:39

    A one-liner mimicking slash and upath (see the multi-liner version for proof of validity)

    //
    // one-liner
    //
    let convertPath = (windowsPath) => windowsPath.replace(/^\\\\\?\\/,"").replace(/\\/g,'\/').replace(/\/\/+/g,'\/')
    
    //
    // usage
    //
    convertPath("C:\\repos\\vue-t\\tests\\views\\index\\home.vue")
    // >>> "C:/repos/vue-t/tests/views/index/home.vue"
    
    //
    // multi-liner (commented and compatible with really old javascript versions)
    //
    function convertPath(windowsPath) {
        // handle the edge-case of Window's long file names
        // See: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#short-vs-long-names
        windowsPath = windowsPath.replace(/^\\\\\?\\/,"");
    
        // convert the separators, valid since both \ and / can't be in a windows filename
        windowsPath = windowsPath.replace(/\\/g,'\/');
    
        // compress any // or /// to be just /, which is a safe oper under POSIX
        // and prevents accidental errors caused by manually doing path1+path2
        windowsPath = windowsPath.replace(/\/\/+/g,'\/');
    
        return windowsPath;
    };
    
    // dont want the C: to be inluded? here's a one-liner for that too
    let convertPath = (windowsPath) => windowsPath.replace(/^\\\\\?\\/,"").replace(/(?:^C:)?\\/g,'\/').replace(/\/\/+/g,'\/')
    

提交回复
热议问题