1. 程式人生 > >nodejs vinyl-fs 處理文件時輸入問題

nodejs vinyl-fs 處理文件時輸入問題

好用 rip req .com 輸入 而且 runt anim var

使用 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 處理文件時輸入問題