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, '/');
};