NodeJS常用包介绍--slash

2018-10-30  本文已影响21人  Jadyn

NPM 地址

https://www.npmjs.com/package/slash

Github 地址

https://github.com/sindresorhus/slash

版本

2.0.0

安装

npm install slash

简介

用于转换 Windows 反斜杠路径转换为正斜杠路径 \ => /

正斜杠在 Windows 上是可用的,因为 Windows API 会自动将 / 转换为 \。但是如果路径为扩展长度路径(“\?\”前缀),或包含非 Ascii 字符,则不会适用于Windows。

什么是扩展长度路径(extended-length paths)
在 Windows 系统中,文件路径的最大长度为 MAX_PATH,默认为 260 个字符。但是 Windows API 中有些函数,具有 unicode 版本,以允许扩张路径长度,最大长度为 32767 个字符。要指定扩展长度路径,需要使用 \\?\ 作为前缀,例如:\\?\C:\长路径
具体内容看这里

API

slash(path: string): string

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

const str = path.join('foo', 'bar');
slash(str);
// Unix   => foo/bar
// Windows => foo/bar

源码解析

全部源码:

'use strict';
module.exports = input => {
    // 判断是否是扩展长度路径
    const isExtendedLengthPath = /^\\\\\?\\/.test(input);
    // 判断输入中是否包含非 Ascii 字符
    const hasNonAscii = /[^\u0000-\u0080]+/.test(input); // eslint-disable-line no-control-regex

    // 如果包含非 Ascii 字符并且是扩展长路径,则直接返回输入
    if (isExtendedLengthPath || hasNonAscii) {
        return input;
    }

    // 替换输入中的 \ 为 /
    return input.replace(/\\/g, '/');
};
上一篇下一篇

猜你喜欢

热点阅读