1 changed files with 53 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||||
|
#!/usr/bin/env python3 |
||||||
|
# -*- coding: utf-8 -*- |
||||||
|
''' |
||||||
|
Author: Alvis Zhao |
||||||
|
Date: 2020-08-04 12:15:30 |
||||||
|
LastEditTime: 2020-08-14 11:43:39 |
||||||
|
Description: 解析package-lock.json下载npm缓存包 |
||||||
|
''' |
||||||
|
|
||||||
|
import os |
||||||
|
import json |
||||||
|
import urllib.request |
||||||
|
|
||||||
|
dependencyDict = {} |
||||||
|
|
||||||
|
def analyzeDependency(dependencies): |
||||||
|
for key in dependencies: |
||||||
|
dependenciesInfo = dependencies[key] |
||||||
|
|
||||||
|
if "resolved" in dependenciesInfo: |
||||||
|
url = dependenciesInfo["resolved"] |
||||||
|
version = dependenciesInfo["version"] |
||||||
|
# 存入字典去重 |
||||||
|
dependencyDict[key + "-" + version] = url |
||||||
|
|
||||||
|
if "dependencies" in dependenciesInfo: |
||||||
|
childDependencies = dependenciesInfo["dependencies"] |
||||||
|
analyzeDependency(childDependencies) |
||||||
|
|
||||||
|
output = "offline-packages" |
||||||
|
|
||||||
|
if not os.path.exists(output): |
||||||
|
os.mkdir(output) |
||||||
|
|
||||||
|
f = open('package-lock.json', 'r') |
||||||
|
content = f.read() |
||||||
|
contentDict = json.loads(content) |
||||||
|
dependencies = contentDict["dependencies"] |
||||||
|
# 分析并保存依赖 |
||||||
|
analyzeDependency(dependencies) |
||||||
|
|
||||||
|
# 按照key排序下载 |
||||||
|
sortedKeys = sorted(dependencyDict) |
||||||
|
for key in sortedKeys: |
||||||
|
url = dependencyDict[key] |
||||||
|
params = url.split("?")[0].split("/") |
||||||
|
filename = params[len(params) -1] |
||||||
|
outputFile = output + os.sep + filename |
||||||
|
print("downloading " + " " + key + " " + url) |
||||||
|
if not os.path.isfile(outputFile): |
||||||
|
urllib.request.urlretrieve(url, outputFile) |
||||||
|
|
||||||
|
f.close() |
Loading…
Reference in new issue