刪除頑固node_modules


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

一開始我只能通過另起文件夾的做法來重新啟用新項目,發現僵屍文件越來越多,幾翻周折,終於找到解決方法。步驟如下:

  1. 新建空白目錄,如 D:\Study\emptyDir
  2. 管理員方式打開命令行窗口;
  3. 輸入robocopy D:\Study\emptyDir D:\Study\node_modules /purge

這里主要使用了robocopy命令,它是一個目錄復制命令,配置好參數可以達到刪除文件的效果,

命令語法:ROBOCOPY source destination [file [file]…] [options]

  1. source:源目錄(驅動器:\路徑或\\服務器\共享\路徑)
  2. destination:目標目錄(驅動器:\路徑或\\服務器\共享\路徑)
  3. [file [file]…]:要復制的文件(名稱/通配符: 默認為 "*.*")
  4. 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文件夾的歡迎留言分享,謝謝,一起學習,一起進步!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM