美文网首页
NodeJS常用包介绍--slash

NodeJS常用包介绍--slash

作者: Jadyn | 来源:发表于2018-10-30 22:52 被阅读21次

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

    相关文章

      网友评论

          本文标题:NodeJS常用包介绍--slash

          本文链接:https://www.haomeiwen.com/subject/wzcntqtx.html