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. ...
随机推荐
- TIME_WAIT状态的作用
TIME_WAIT状态: 主动关闭的那端最后经历的状态,一般为2MSL秒(1~4分钟). 两个原因: 保证当最后一个ack丢失后,能收到对端重传的fin包. 保证ack包消失,不会影响下一个连接. 关 ...
- 【校招面试 之 C/C++】第13题 C++ 指针和引用的区别
1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int ...
- 删除链表中的重复元素:不留&留一个&删除一个
不留: [抄题]: 给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素. [思维问题]: 给出 1->2->3->3->4->4->5->nul ...
- Bad Hair Day
/* Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-c ...
- ubuntu下设置DNS服务器
当网卡通过DHCP获取IP地址时,DHCP会根据DHCP服务器配置,自动给系统分配DNS服务器地址,此时执行 ping www.baidu.com 动作,会将百度的域名在本地转换成ip地址,然后走路由 ...
- laravel增删改查(查询构建器)
1.增 $data = [ 'username' => 'xiaohong', 'nickname' => '小红红', 'email' => '12356788@qq.com', ...
- 解决 cmake_symlink_library: System Error: Operation not supported
在编译uchardet时遇到这个错误: cmake_symlink_library: System Error: Operation not supported 创建链接不成功,要确认当前帐户下是否有 ...
- makefile all
all:udps udpc udps:udpserv.c gcc -Wall -o udps udpserv.cudpc:udpclient.c gcc -Wall -o udpc udp ...
- [Selenium] jsclick
SeleniumUtil.jsClick(driver, saveButtonEl);
- Telnet 安装
Telnet 安装 一.Telnet 安装 (1) 登录目标主机检测 telnet 服务是否正常 [root@localhost ~]# telnet localhost -bash: telnet: ...