У меня есть несколько проектов npm, сохраненных в локальном каталоге. Теперь я хочу сделать резервную копию своих проектов без папки node_modules, так как она занимает много места и может быть восстановлена ​​в любое время с помощью npm install.

Итак, мне нужно решение для рекурсивного удаления всех папок node_modules по указанному пути с помощью интерфейса командной строки. Любые предложения / помощь очень ценны.

Ответы (10)

Распечатать список удаляемых каталогов:

find . -name 'node_modules' -type d -prune

Удалить каталоги из текущего рабочего каталога:

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +

В качестве альтернативы вы можете использовать trash (brew install trash) для поэтапного удаления:

find . -name node_modules -type d -prune -exec trash {} +

ОС: Ubuntu

Простой трюк для удаления всех node_modules на ваших серверах (что может уменьшить много места) - это запустить:

sudo find / -not -path "/ usr / lib / *" -name 'node_modules' -type d -prune -exec rm -rf '{}' +

Здесь нам нужно исключить / usr / lib / *, потому что, если вы этого не сделаете, он удалит ваш npm, и вам нужно будет его переустановить :)

Try https://github.com/voidcosmos/npkill

npx npkill

он найдет все node_modules и позволит вам удалить их.

npkill

Сценарий Python для удаления папки node_modules из нескольких проектов. Просто поместите его в папку вашего проекта, состоящую из нескольких проектов, и запустите.

import os
import shutil
dirname = '/root/Desktop/proj' #Your Full Path of Projects Folder
dirfiles = os.listdir(dirname)

fullpaths = map(lambda name: os.path.join(dirname, name), dirfiles)

dirs = []

for file in fullpaths:
    if os.path.isdir(file): dirs.append(file)

for i in dirs:
    dirfiles1 = os.listdir(i)
    fullpaths1 = map(lambda name: os.path.join(i, name), dirfiles1)
    dirs1 = []
    for file in fullpaths1:
        if os.path.isdir(file):
            dirs1.append(file)
            if(file[-12:]=='node_modules'):
                shutil.rmtree(file)
                print(file)
    

Это действительно хорошо работает

find . -name "node_modules" -exec rm -rf '{}' +

В Windows я использую следующий файл .BAT для рекурсивного удаления node_modules из текущей папки:

@for /d /r . %d in (node_modules) do @if exist %d (echo %d && rd %d /s /q) 

Или через CMD.EXE:

cmd.exe /c "@for /d /r . %d in (node_modules) do @if exist %d (echo %d && rd %d /s /q)"

Я столкнулся с этим решением,

  • сначала найдите папку с помощью найдите и укажите имя папки.
  • рекурсивно выполнить команду удаления -exec rm -rf '{}' +

выполните следующую команду для рекурсивного удаления папок

find / path -type d -name "node_modules" -exec rm -rf '{}' +

bash function to remove node_modules. It will remove all node_modules directories recursively from the current working directory, while printing found paths.

Вам просто нужно указать где-нибудь в вашем $ PATH

rmnodemodules () {

  найти . -name 'node_modules' -type d -prune -exec echo '{}' \; -exec rm -rf {} \;

}

, если вы хотите переместить вместо удаления:

find . -name 'node_modules' -type d -prune -exec mkdir -p ./another/dir/{} \; -exec mv -i {} ./NODE_MODULES/{} \;

при этом будет сохранена структура каталогов.

Улучшение принятого ответа,

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +

Я обнаружил, что команда будет работать очень долго, чтобы получить все папки, а затем запустить команду удаления, чтобы сделать команду возобновляемой, я бы предложил использовать \; и увидеть ход выполнения команды при запуске используйте -print, чтобы увидеть удаляемый каталог.

Примечание: Вы должны сначала cd в корневой каталог, а затем запустить команду или вместо find. использовать find {project_directory}

Удалять папки по одной

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \;

Для удаления папок по одной и печати удаляемой папки

find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;

Изменить:

Для людей, которым нравится интерактивный способ сделать это, обратитесь к ответу @jeckep, запустите его в каталоге, который вы хотите удалить.

npx npkill

2022 WebDevInsider