@yyp92-cli/utils 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/NpmPackage.d.ts +19 -0
- package/dist/NpmPackage.js +89 -0
- package/dist/NpmPackage.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/versionUtils.d.ts +5 -0
- package/dist/versionUtils.js +43 -0
- package/dist/versionUtils.js.map +1 -0
- package/package.json +2 -1
- package/src/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface NpmPackageOptions {
|
|
2
|
+
name: string;
|
|
3
|
+
targetPath: string;
|
|
4
|
+
}
|
|
5
|
+
declare class NpmPackage {
|
|
6
|
+
name: string;
|
|
7
|
+
version: string;
|
|
8
|
+
targetPath: string;
|
|
9
|
+
storePath: string;
|
|
10
|
+
constructor(options: NpmPackageOptions);
|
|
11
|
+
prepare(): Promise<void>;
|
|
12
|
+
install(): Promise<any>;
|
|
13
|
+
get npmFilePath(): string;
|
|
14
|
+
exists(): Promise<boolean>;
|
|
15
|
+
getPackageJSON(): Promise<any>;
|
|
16
|
+
getLatestVersion(): Promise<any>;
|
|
17
|
+
update(): Promise<any>;
|
|
18
|
+
}
|
|
19
|
+
export default NpmPackage;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import fse from 'fs-extra';
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
import npminstall from 'npminstall';
|
|
14
|
+
import { getLatestVersion, getNpmRegistry } from './versionUtils.js';
|
|
15
|
+
import path from 'node:path';
|
|
16
|
+
class NpmPackage {
|
|
17
|
+
constructor(options) {
|
|
18
|
+
this.version = '';
|
|
19
|
+
this.targetPath = options.targetPath;
|
|
20
|
+
this.name = options.name;
|
|
21
|
+
this.storePath = path.resolve(options.targetPath, 'node_modules');
|
|
22
|
+
}
|
|
23
|
+
prepare() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
if (!fs.existsSync(this.targetPath)) {
|
|
26
|
+
fse.mkdirpSync(this.targetPath);
|
|
27
|
+
}
|
|
28
|
+
const version = yield getLatestVersion(this.name);
|
|
29
|
+
this.version = version;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
install() {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
yield this.prepare();
|
|
35
|
+
return npminstall({
|
|
36
|
+
pkgs: [
|
|
37
|
+
{
|
|
38
|
+
name: this.name,
|
|
39
|
+
version: this.version,
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
registry: getNpmRegistry(),
|
|
43
|
+
root: this.targetPath
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
get npmFilePath() {
|
|
48
|
+
// 最外层目录包名中的 / 会被替换为 +
|
|
49
|
+
return path.resolve(this.storePath, `.store/${this.name.replace('/', '+')}@${this.version}/node_modules/${this.name}`);
|
|
50
|
+
}
|
|
51
|
+
// exists 方法就是判断这个目录是否存在,从而判断包又没有安装
|
|
52
|
+
exists() {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
yield this.prepare();
|
|
55
|
+
return fs.existsSync(this.npmFilePath);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// getPackageJSON 方法就是用 readJSONSync 读取 package.json 文件
|
|
59
|
+
getPackageJSON() {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
if (yield this.exists()) {
|
|
62
|
+
return fse.readJsonSync(path.resolve(this.npmFilePath, 'package.json'));
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
getLatestVersion() {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
return getLatestVersion(this.name);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
update() {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const latestVersion = yield this.getLatestVersion();
|
|
75
|
+
return npminstall({
|
|
76
|
+
root: this.targetPath,
|
|
77
|
+
registry: getNpmRegistry(),
|
|
78
|
+
pkgs: [
|
|
79
|
+
{
|
|
80
|
+
name: this.name,
|
|
81
|
+
version: latestVersion,
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export default NpmPackage;
|
|
89
|
+
//# sourceMappingURL=NpmPackage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NpmPackage.js","sourceRoot":"","sources":["../src/NpmPackage.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,aAAa;AACb,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,UAAU;IAMZ,YAAY,OAA0B;QAJtC,YAAO,GAAW,EAAE,CAAC;QAKjB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAEK,OAAO;;YACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;KAAA;IAEK,OAAO;;YACT,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAErB,OAAO,UAAU,CAAC;gBACd,IAAI,EAAE;oBACF;wBACI,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI,CAAC,OAAO;qBACxB;iBACJ;gBACD,QAAQ,EAAE,cAAc,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,UAAU;aACxB,CAAC,CAAC;QACP,CAAC;KAAA;IAED,IAAI,WAAW;QACX,sBAAsB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3H,CAAC;IAED,mCAAmC;IAC7B,MAAM;;YACR,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAErB,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;KAAA;IAED,uDAAuD;IACjD,cAAc;;YAChB,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtB,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;YAC3E,CAAC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEK,gBAAgB;;YAClB,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;KAAA;IAEK,MAAM;;YACR,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpD,OAAO,UAAU,CAAC;gBACd,IAAI,EAAE,IAAI,CAAC,UAAU;gBACrB,QAAQ,EAAE,cAAc,EAAE;gBAC1B,IAAI,EAAE;oBACF;wBACI,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,aAAa;qBACzB;iBACJ;aACJ,CAAC,CAAC;QACP,CAAC;KAAA;CACJ;AAED,eAAe,UAAU,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EACH,UAAU,EACV,YAAY,EACf,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare function getNpmRegistry(): string;
|
|
2
|
+
declare function getNpmInfo(packageName: string): Promise<any>;
|
|
3
|
+
declare function getLatestVersion(packageName: string): Promise<any>;
|
|
4
|
+
declare function getVersions(packageName: string): Promise<string[]>;
|
|
5
|
+
export { getNpmRegistry, getNpmInfo, getLatestVersion, getVersions };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import axios from 'axios';
|
|
11
|
+
import urlJoin from 'url-join';
|
|
12
|
+
function getNpmRegistry() {
|
|
13
|
+
return 'https://registry.npmmirror.com';
|
|
14
|
+
}
|
|
15
|
+
function getNpmInfo(packageName) {
|
|
16
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
+
const register = getNpmRegistry();
|
|
18
|
+
const url = urlJoin(register, packageName);
|
|
19
|
+
try {
|
|
20
|
+
const response = yield axios.get(url);
|
|
21
|
+
if (response.status === 200) {
|
|
22
|
+
return response.data;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
return Promise.reject(e);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function getLatestVersion(packageName) {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const data = yield getNpmInfo(packageName);
|
|
33
|
+
return data['dist-tags'].latest;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function getVersions(packageName) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const data = yield getNpmInfo(packageName);
|
|
39
|
+
return Object.keys(data.versions);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export { getNpmRegistry, getNpmInfo, getLatestVersion, getVersions };
|
|
43
|
+
//# sourceMappingURL=versionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionUtils.js","sourceRoot":"","sources":["../src/versionUtils.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,SAAS,cAAc;IACnB,OAAO,gCAAgC,CAAC;AAC5C,CAAC;AAED,SAAe,UAAU,CAAC,WAAmB;;QACzC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC;YACzB,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,WAAmB;;QAC/C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;CAAA;AAED,SAAe,WAAW,CAAC,WAAmB;;QAC1C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CAAA;AAED,OAAO,EACH,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,WAAW,EACd,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yyp92-cli/utils",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"axios": "^1.11.0",
|
|
16
16
|
"fs-extra": "^11.3.1",
|
|
17
|
+
"npminstall": "^7.12.0",
|
|
17
18
|
"url-join": "^5.0.0"
|
|
18
19
|
},
|
|
19
20
|
"devDependencies": {
|