nodejs vinyl-fs 处理文件时输入问题

Posted xxred

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs vinyl-fs 处理文件时输入问题相关的知识,希望对你有一定的参考价值。

使用 nodejs vinyl-fs 复制文件时输出路径不对,还是会有原来的相对路径,原因是用了反斜杠“\\”,正斜杠“/”没问题

测试过程

node版本: v9.3.0

系统:win10

步骤:

得到两个不同路径

技术分享图片

先测试路径p1,p1是反斜杠,将文件输出到test文件夹,结果是多了“bower_components\\animate.css”这个相对路径

技术分享图片

技术分享图片

下面是路径p2,p2是正斜杠,正常输出

技术分享图片

代码

技术分享图片
1 var glob = require("glob")
2 var path =require("path")
3 var vfs = require(‘vinyl-fs‘)
4 
5 var p1=path.join("./","/bower_components/animate.css/animate.css")
6 var p2="bower_components/animate.css/animate.css"
7 
8 vfs.src(p1).pipe(vfs.dest("test"))
9 vfs.src(p2).pipe(vfs.dest("test"))
View Code

总结

正反斜杠可能会出现的情况:一般来说,我手动写的路径都是用正斜杠“/”,有时候为了方便拼接路径会使用 path类库 相关函数,一般在windows上跑出来的结果是反斜杠,平时在win的文件管理地址栏复制出来的地址也是反斜杠,C#

的 path类库处理的结果也有反斜杠。

统一的做法:在一个路径同时含有正反斜杠的时候,要看使用者挑不挑格式,如果没要求那就随意,有要求的话还是在处理下,把反斜杠换成正斜杠,避免未知的问题出现。也不深究了,反正用正斜杠就没错了。

有关资料:

nodejs文档 path相关 https://nodejs.org/dist/latest-v9.x/docs/api/path.html

glob表达式  https://www.npmjs.com/package/glob

glob文档里有的说到(其实我只是想简单的玩一下,文档都没看过,谁知道有这坑):在windows平台,glob表达式请只使用正斜杠。但是我相信,依然还有很多人没看过,也不知道,大都是复制粘贴,结果可能会在本就出了小问题的项目上再添一个,然后bug连环。讲到这里我不得不吐槽一下grunt的一些插件,文档几乎没用,文档里指向其它文档的链接也没有,出了问题也难调试,浪费了好多时间。后来就用gulp了,稍微好点,看官网感觉插件质量普遍好点,性能也比grunt好。这些插件实在是让人头疼,用吧又有各种小问题,自己写吧又要费时间还不一定写的比人家好,后来又发现 npm scripts。都是基于nodejs,非得搞各种乱七八糟的格式,文档有没有统一规范,插件质量参差不齐。对于初学者来说,学习成本不是一般的高。为什么非得要使用者掌握那么多基础才能正常使用呢,就像买回来电脑还要去学习它的运行原理,装系统等等才能使用,我只是想看片而已啊。

难得写点东西,再唠嗑唠嗑。这两天了解了以前只知道概念却没用过的npm和bower包管理,从感叹竟然有grunt这么神奇的东西,到抛掉它使用gulp,再到回到 npm scripts,怎么说呢,像是回归到原始了。不就都是js吗,还搞各种乱七八糟的,我仅仅只是要脚本复制文件,结果几行代码就自己搞定的事情,我硬是从grunt、到gulp 和 npm scripts逛了一圈,那我还不如直接用t4模板,用自己能掌控的熟悉的语言来减轻自己的工作。本来各种辅助工具就是减轻各种重复厌烦的工作的,结果到头来是增加了学习成本还不一定能把事干好。如果造轮子的成本比学习其他轮子的成本低,那干嘛不自己造轮子,而且自己实践的东西学的更加深刻。无论怎么样,还是要感谢各位大佬造的这么多好用牛逼的东西,最后希望国内能再多一些各种牛逼的技术,技术全面向前发展。

以上是关于nodejs vinyl-fs 处理文件时输入问题的主要内容,如果未能解决你的问题,请参考以下文章

gulp源码解析—— vinyl-fs

nodejs - 处理许多json文件时的内存问题

如何在从 NodeJS 中的多个输入流中读取时写入单个文件

为啥说nodejs是异步非阻塞

并行处理nodejs中的多个文件

nodejs请求静态资源404错误,后台需处理返回http请求的静态资源