如何使用节点路径将Windows路径转换为posix路径

Dom*_*cus 6 javascript windows posix node.js

我在Windows上进行开发,但是需要知道如何将Windows路径(带有反斜杠\)转换为带有正斜杠(/)的POSIX路径吗?

我的目标是转换C:\repos\vue-t\tests\views\index\home.vueC:/repos/vue-t/tests/views/index/home.vue

所以我可以在导入磁盘的文件中使用它

const appImport = `
import Vue from "vue"
import App from '${path}'

function createApp (data) {
    const app = new Vue({
        data,
        render: h => h(App)
    })
    return app
}`

//this string is then written to the disk as a file
Run Code Online (Sandbox Code Playgroud)

我不想使用.replace(/\\/g, '/')字符串,而是希望使用一个require('path')函数。

Mik*_*ans 47

鉴于所有其他答案都依赖于安装(要么太大,要么太小)第三方模块:这也可以作为相对路径的单行来完成(你应该已经使用了 99.999% 的时间)使用 Node 的标准库路径模块,更具体地说,利用其专用的path.posixpath.win32命名空间属性/函数(在 Node v0.11 中引入):

const path = require("path");

// ...

const definitelyPosix = somePathString.split(path.sep).join(path.posix.sep);
Run Code Online (Sandbox Code Playgroud)

无论您已经在 POSIX 平台上还是在 win32 上,这都会将您的路径转换为 ​​POSIX 格式,同时需要零依赖项。

  • 感谢 Windows 网络共享,这是一个危险的假设,几乎肯定会在路径处理中产生错误。最好不要全部通过坚持相对位置来实现(“path”有几个辅助函数)。如果您的代码需要知道它在哪个驱动器上运行,那么您已经在编写跨平台不兼容的代码,是时候问问自己为什么这样做了。 (3认同)
  • 代码不需要知道它在哪个驱动器上运行,`path.resolve(__dirname, 'packages')` 在 Windows 上返回 `D:/file/path/here`。对于它的价值,我在实际项目中使用了以下内容:`return posixPath.replace(/^[a-zA-Z]:/, '')` (2认同)

Raj*_*mal 6

斜杠将Windows反斜杠路径转换为Unix路径

用法:

const path = require('path');
const slash = require('slash');

const str = path.join('foo', 'bar');

slash(str);
// Unix    => foo/bar
// Windows => foo/bar
Run Code Online (Sandbox Code Playgroud)

  • 但它已经是普通 Node 中的一行了... `pathstring.split(path.sep).join(path.posix.sep)` 就完成了,为此安装一个模块有点疯狂。特别是考虑到 https://github.com/sindresorhus/slash/blob/master/index.js 的实际作用。 (7认同)
  • 谢谢,我还不能投票,但是`slash` 基本上就是`.replace(/\\/g, '/')` 的字符串 (5认同)

Moh*_*med 5

有一个名为upath 的节点包会将windows 路径转换为unix。

upath = require('upath');
Run Code Online (Sandbox Code Playgroud)

或者

import * as upath from 'upath';

upath.toUnix(destination_path)
Run Code Online (Sandbox Code Playgroud)