在工作中有用到gulp,webpack,使用他們需用依賴node的一些模塊包,於是會在目錄下生成一個node_modules文件夾。有一次想刪掉它重新生成模塊包的時候發現根本不太可能,無窮無盡的報一個錯:路徑太長(太深),無法刪除,使用命令行rd、del均嘗試無效(此問題win10系統下已不會出現,小伙伴們趕緊更新系統吧)。

一開始我只能通過另起文件夾的做法來重新啟用新項目,發現僵屍文件越來越多,幾翻周折,終於找到解決方法。步驟如下:
- 新建空白目錄,如
D:\Study\;emptyDir - 管理員方式打開命令行窗口;
- 輸入
robocopyD:\Study\D:\emptyDir\node_modules /purgeStudy
這里主要使用了robocopy命令,它是一個目錄復制命令,配置好參數可以達到刪除文件的效果,
命令語法:ROBOCOPY source destination [file [file]…] [options]
- source:源目錄(驅動器:\路徑或\\服務器\共享\路徑)
- destination:目標目錄(驅動器:\路徑或\\服務器\共享\路徑)
- [file [file]…]:要復制的文件(名稱/通配符: 默認為 "*.*")
- options參數設為/purse時可以刪除源中不再存在的目標文件/目錄。
此處以一個空文件做源文件,相當於目標文件里的所有文件都是要被刪除的,至此解決了刪除問題。
雖然解決了文件刪除的問題,但是總感覺缺少點什么,那就是感覺操作有此頻瑣,於時想到是否可以把當前命令行打包成一個文件快速執行了,當時就想到.bat批處理文件。
於是百度腦補了下批處理文件制作方法,生成了如下批處理文件,代碼大致如下:
@echo off color 0b mode con cols=80 lines=25 echo ----------------------------------------------------------------- echo 頑固文件刪除 echo ----------------------------------------------------------------- echo ****************************************************************** echo Tips: echo 輸入*:刪除當前目錄下的node_modules echo 輸入其它:則會刪除對應文件名的文件夾 echo ****************************************************************** set /p deleFile=請輸入您要刪除的文件: if %deleFile% == * (goto deleNodeModules) else (goto deleUserFile) :deleNodeModules md deleEmptyFile robocopy deleEmptyFile node_modules /purge rd node_modules rd deleEmptyFile exit :deleUserFile md deleEmptyFile robocopy deleEmptyFile %deleFile% /purge rd %deleFile% rd deleEmptyFile exit
本想實現當提示“請輸入您要刪除的文件”直接回車應該是直接刪除node_modules文件夾,但是一直沒能實現,暫時做到輸入星號代表是刪除node_modules文件夾,輸入其它則是刪除對應的文件夾名。批處理文件夾下載,可下載到本地再把其中的.bat文件放到要刪除文件夾的同目錄下,雙擊運行按提示輸入即可批運行上面命令實現刪除文件。
使用此命令前最好先直接刪除一下,只有余下那些刪不了的文件的時候再用此方法來刪除,如直接用這個命令刪除等待時間有點小長,刪除時的情景大致如下:

增加方法2
另一種刪除node_modules的方式,通過安裝rimraf來刪除,更接近前端,也是這篇博客的讀者seaton的留言分享方法,親測可行,非常感謝,特記錄下來。
npm install rimraf -g
rimraf node_modules
個人能力有限,如果有能實現不輸入文件夾直接回車就能直接刪除node_modules文件夾的歡迎留言分享,謝謝,一起學習,一起進步!
