我解決了它使用這個自定義腳本:
import json
from itertools import groupby
from pprint import pprint
import os
import subprocess
allPackages = subprocess.check_output("find node_modules/ -name 'package.json'", shell=True).splitlines()
# Collect all modules
allModules = {}
for filePath in allPackages:
with open(filePath.strip()) as data_file:
data = json.load(data_file)
packageKey = data['name'] + data['version']
if packageKey not in allModules:
allModules[packageKey] = list()
allModules[packageKey].append(os.path.dirname(filePath))
# Remove not duplicated ones
for packageKey, paths in allModules.items():
if (len(paths) > 1):
original = allModules[packageKey].pop()
for module in allModules[packageKey]:
originalRelativeToModule = os.path.relpath(original,os.path.dirname(module))
print('delete folder ', module, 'and symlink to ', originalRelativeToModule)
print(subprocess.check_call(["rm","-rf",module]))
print(subprocess.check_call(["ln","-s",originalRelativeToModule,module]))
什麼版本的NPM您使用的是?運行'npm -v'。如果您使用的版本低於NPM 3,則應該升級 - 在該版本中進行了大量的軟件包重複數據刪除。 –
我使用npm 4.2.0和節點7.9.0 –
啊,好的。規則一件事,至少:)你試過運行'npm dedupe'嗎? –