nodejs vinyl-fs 处理文件时输入问题
使用 nodejs vinyl-fs 复制文件时输出路径不对,还是会有原来的相对路径,原因是用了反斜杠“\”,正斜杠“/”没问题
测试过程
node版本: v9.3.0
系统:win10
步骤:
得到两个不同路径

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


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

代码
var glob = require("glob")
var path =require("path")
var vfs = require('vinyl-fs')
var p1=path.join("./","/bower_components/animate.css/animate.css")
var p2="bower_components/animate.css/animate.css"
vfs.src(p1).pipe(vfs.dest("test"))
vfs.src(p2).pipe(vfs.dest("test"))
总结
正反斜杠可能会出现的情况:一般来说,我手动写的路径都是用正斜杠“/”,有时候为了方便拼接路径会使用 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 处理文件时输入问题的更多相关文章
- PyCharm编辑HTML文件时输入{%不能自动补全
在PyCharm编辑HTML文件时输入Django模板语言时,发现录入 {% 不能自动补全. 找了一下,发现 setting 里可以设置 Python Template Languages,选择自己使 ...
- qemu:///system 没有连接驱动器可用;读取数据时进入文件终点: 输入/输出错误
原因 1. KVM的相关包 装少了 2KVM的相关包 重新安装 3 May 31 15:22:55 localhost libvirtd: 2019-05-31 07:22:55.554+0000: ...
- nodejs模块fs——文件操作api
// fs模块常用api // 读取文件 .写入文件 .追加文件. 拷贝文件 .删除文件 // 读取文件 // fs.readFile(path[, options], callback) // fs ...
- nodeJS之fs文件系统
前面的话 fs文件系统用于对系统文件及目录进行读写操作,本文将详细介绍js文件系统 概述 文件 I/O 是由简单封装的标准 POSIX 函数提供的. 通过 require('fs') 使用该模块. 所 ...
- node.js 初学(一)—— http fs 服务器/文件/post get
node.js 初学 —— http fs 服务器/文件/post get 这个世界,从来不会给失败者颁奖! 了解 node.js (开源) node.js 是用来做后台开发的,但是现在大部分前端人员 ...
- 如何使用NodeJs来监听文件变化
1.前言 在我们调试修改代码的时候,每修改一次代码,哪怕只是很小的修改,我们都需要手动重新build文件,然后再运行代码,看修改的效果,这样的效率特别低,对于开发者来说简直不能忍. 2.构建自动编译工 ...
- java基础八 [序列化和文件的输入/输出](阅读Head First Java记录)
对象具有状态和行为两种属性.行为存在类中的方法中,想要保存状态有多种方法,这里介绍两种: 一是保存整个当前对象本身(通过序列化):一是将对象中各个状态值保存到文件中(这种方式可以给其他非JAVA程序用 ...
- 解决node.js使用fs读取文件出错
今天配接口,使用fs模块读取json出现了错误'no such file or directory',然后经查终于解决,特此记录. 使用nodejs的fs模块读取文件时习惯用相对路径,但是运行的时 ...
- u盘传输文件时提示过大
(无需格式化U盘) 1.拷贝大文件时提示目标文件系统过大,无法复制 2.查U盘,发现剩余空间足够: 3.分析原因,是由于U盘的格式问题导致的,当期的磁盘格式是FAT32类型的,无拷贝过大的文件: 4. ...
随机推荐
- 查看端口号根据pid号找到相关占用端口应用
查看端口号根据pid号找到相关占用端口应用 8080 端口被占用不知道被哪个应用软件占用,下面我来教你查出那个该死的应用 方法/步骤 1 首先用netstat 找到端口对应的pid号,找到之后 ...
- Java中的NIO及IO
1.概述 Java NIO(New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, ...
- PHP下ajax跨域的解决方案之CORS
由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域. CORS(跨域资源共享,Cross-Origin Resource Shari ...
- boost基础环境搭建
因为现在手上的老的基类库经常出现丢包,以及从ServiceAClient 发送消息到 ServiceBServer时出现消息失败的情况,以及现有的莫名其妙的内存泄露的问题,以及目前还是c++0x,准确 ...
- DNA binding motif比对算法
DNA binding motif比对算法 2012-08-31 ~ ADMIN 之前介绍了序列比对的一些算法.本节主要讲述motif(有人翻译成结构模式,但本文一律使用基模)的比对算法. 那么什么是 ...
- BZOJ2424 [HAOI2010]订货 - 费用流
题解 (非常裸的费用流 题意有一点表明不清: 该月卖出的商品可以不用算进仓库里面. 然后套上费用流模板 代码 #include<cstring> #include<queue> ...
- 11月11日光棍节考试总结hhh
好吧,第一题字符串裸栈就能A 第二题字典序没调完,先写的第一题和第三题暴力,第二题读题感觉自己不会写,其实也能写出来,浪费了好多时间 第三题DP大概是写的暴力,原本可以搞到20分,要交的时候发现自己少 ...
- laravel中的old()函数
1.控制器 2.模板
- makefile all
all:udps udpc udps:udpserv.c gcc -Wall -o udps udpserv.cudpc:udpclient.c gcc -Wall -o udpc udp ...
- 解决Axure发布分享预览的3个方法
公司的同事制作的一个产品原型,要发给我,我当时正在客户这里,电脑上并没有Axure,客户又催得急,感到一阵无奈.这次回来之后,经过一番摸索,发现还是有办法的.这里给大家分享一下Axure发布分享预览的 ...