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. ...
随机推荐
- day10:vcp考试
Q181. An administrator is deploying ESXi 6.x hosts using Auto Deploy and wants the image profile to ...
- swift和OC - 拆分数组 和 拆分字符串
1. 拆分数组 /// 根据 数组 截取 指定个数返回 多个数组的集合 func splitArray( array: [Date], withSubSize subSize: Int) -> ...
- struts2框架值栈的概述之问题一:什么是值栈?
1. 问题一:什么是值栈? * 值栈就相当于Struts2框架的数据的中转站,向值栈存入一些数据.从值栈中获取到数据. * ValueStack 是 struts2 提供一个接口,实现类 OgnlVa ...
- 【笔记】C#往TextBox的方法AppendText加入的内容里插入换行符
C# TextBox换行[huan hang]时你往往会想到直接付给一个含有换行[huan hang]符"\n"的字符[zi fu]串[zi fu chuan]给Text属性[sh ...
- Template msg
http://blog.csdn.net/xiejiawanwei2_bb/article/details/40680493 {{first.DATA}} 日期:{{Day.DATA}} 报警类型:{ ...
- HTML5新协议介绍 WebSocket
WebSocket protocol 是HTML5一种新的协议(protocol).它是实现了浏览器与服务器全双工通信(full-duplex). 现在,很多网站为了实现即时通讯(real-time) ...
- Windows“储存并显示最近在开始菜单和任务栏中打开的项目”显示灰色问题解决
问题截图如下: 解决方法 打开"组策略",依次选择"用户配置"--"管理模板"--"开始菜单和任务栏"--"不 ...
- 创建cookie
cookie的创建using System;using System.Collections.Generic;using System.Linq;using System.Web;using Syst ...
- 安卓编译 translate error Lint: How to ignore “<key> is not translated in <language>” errors?
Add following at the header of your strings.xml file <resources xmlns:tools="http://schemas. ...
- tty linux 打开和设置范例
http://bbs.csdn.net/topics/340184140 /************************************************************** ...