submodule-version 3.0.0 → 3.2.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/README.md +23 -22
- package/dist/src/entryStore.d.ts +1 -0
- package/dist/src/entryStore.js +29 -0
- package/dist/src/entryStore.js.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.js +1 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/npm.d.ts +3 -0
- package/dist/src/npm.js +25 -0
- package/dist/src/npm.js.map +1 -0
- package/dist/src/printError.js +4 -0
- package/dist/src/printError.js.map +1 -1
- package/dist/src/sv.js +23 -2
- package/dist/src/sv.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/entryStore.test.ts +92 -0
- package/src/__tests__/sv.test.ts +56 -0
- package/src/entryStore.ts +34 -0
- package/src/errors.ts +1 -0
- package/src/npm.ts +25 -0
- package/src/printError.ts +4 -0
- package/src/sv.ts +27 -3
package/README.md
CHANGED
|
@@ -6,38 +6,37 @@
|
|
|
6
6
|
|
|
7
7
|
`Submodule version` is a tool to manage git submodules as versioned packages.
|
|
8
8
|
|
|
9
|
-
This tool designed to split projects
|
|
9
|
+
This tool is designed to split projects into submodules *without npm-packages headache*.
|
|
10
10
|
|
|
11
|
-
With `submodule version` code can be organized like a *single monorepo*, but each submodule can be *easily reused* in
|
|
11
|
+
With `submodule version` code can be organized like a *single monorepo*, but each submodule can be *easily reused* in other projects like an npm package.
|
|
12
12
|
|
|
13
13
|
Each module — the project itself and every submodule — declares its dependencies in the `sv` field of its `package.json`, and each release is just a semver git tag. When modules are installed, updated or deleted, `sv` resolves the newest mutually compatible version set across the whole dependency tree with the **PubGrub** algorithm (the one behind Dart's `pub` package manager), reading tags and their `package.json` files straight from the GitHub API without cloning. The resolved set is then applied to the working tree: missing submodules are added, versions are switched to the selected tags and the corresponding `package.json` files are updated — and if no compatible set exists, nothing is touched and a descriptive conflict error is reported.
|
|
14
14
|
|
|
15
15
|
## Problem to solve
|
|
16
16
|
|
|
17
|
-
Take a look
|
|
17
|
+
Take a look at the following situation:
|
|
18
18
|
|
|
19
19
|
- Project has 2 submodules `ui-button-element` and `render-engine`
|
|
20
|
-
- Package `ui-button-element`
|
|
21
|
-
- Third repo `ui-slider-element`
|
|
20
|
+
- Package `ui-button-element` depends on the `render-engine`
|
|
21
|
+
- Third repo `ui-slider-element` depends on the newest version of the `render-engine` and is not included in the project
|
|
22
22
|
|
|
23
|
-
This
|
|
23
|
+
This causes the following problems:
|
|
24
24
|
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
25
|
+
- Adding the submodule `ui-slider-element` causes difficulties handling different `render-engine` versions
|
|
26
|
+
- Manually switching branches in submodules with a big codebase is confusing
|
|
27
|
+
- An updated `ui-button-element` with a new version of `render-engine` should be used in another project with the same version
|
|
28
28
|
|
|
29
29
|
Submodule version helps to
|
|
30
30
|
|
|
31
31
|
- Handle which project should be updated and which version should be installed
|
|
32
|
-
- Help update submodules and
|
|
32
|
+
- Help update submodules and their dependencies
|
|
33
33
|
- Install new submodules
|
|
34
34
|
|
|
35
35
|
## Installation
|
|
36
36
|
|
|
37
37
|
- Install sv tool `npm i -D submodule-version`
|
|
38
38
|
- Set up a GitHub token (see below) — `sv` reads module versions through the GitHub API
|
|
39
|
-
- Install first submodule `npx sv i <git_repo>` — the `workspaces` section in `package.json` is added automatically on `init`
|
|
40
|
-
- Install npm dependencies `npm i`. Submodule will be linked in node_modules and its dependencies will be installed
|
|
39
|
+
- Install first submodule `npx sv i <git_repo>` — the `workspaces` section in `package.json` is added automatically on `init`, and `npm install` runs automatically, so the submodule is linked in node_modules and its dependencies are installed
|
|
41
40
|
- Use your submodule in code `import submodule from 'submodule-name'` 🔥
|
|
42
41
|
|
|
43
42
|
### GitHub token
|
|
@@ -57,24 +56,25 @@ By default submodules live in `modules/` — unless existing submodules in `.git
|
|
|
57
56
|
|
|
58
57
|
## How it works
|
|
59
58
|
|
|
60
|
-
- Each submodule and main project has own `package.json` with `sv` object inside. `sv` object will be generated automatically and will contain every dependency version
|
|
59
|
+
- Each submodule and the main project has its own `package.json` with `sv` object inside. `sv` object will be generated automatically and will contain every dependency version
|
|
61
60
|
```
|
|
62
61
|
"sv": {
|
|
63
62
|
"git@github.com:guljeny/submodule-version.git": "^1.0.0"
|
|
64
63
|
}
|
|
65
64
|
```
|
|
66
|
-
- Each submodule has
|
|
65
|
+
- Each submodule has [version](#versioning) tags, and `sv` uses the list of these tags to resolve dependencies
|
|
67
66
|
- The installed version of a submodule is the version tag git `HEAD` points at
|
|
68
67
|
- `Submodule version` resolves the newest compatible set with PubGrub and loads nested repositories only when a selected version requires them
|
|
69
68
|
- `sv` never switches a submodule version if it has uncommitted changes or unpushed commits — your local work is always kept intact 🧯
|
|
69
|
+
- After modules are installed, switched or removed, `sv` runs `npm install` automatically — no manual `npm i` is needed (on plain `npx sv` it runs only when something actually changed)
|
|
70
70
|
|
|
71
71
|
## Versioning
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
Submodules without specified version tags will be installed with a ref to the latest commit. You should manage them manually.
|
|
74
74
|
|
|
75
|
-
To add new version
|
|
76
|
-
- Specify version in `package.json`
|
|
77
|
-
- Add and push git tag with the same version (`git tag 1.0.1`)
|
|
75
|
+
To add a new version to a submodule:
|
|
76
|
+
- Specify the version in `package.json`
|
|
77
|
+
- Add and push a git tag with the same version (`git tag 1.0.1`)
|
|
78
78
|
|
|
79
79
|
Or use the [`publish`](#programmatic-api) API, which bumps the version, commits, tags and pushes in one call.
|
|
80
80
|
|
|
@@ -109,8 +109,9 @@ The constructor accepts `(projectDir, modulesDir?, { githubToken? })`. The modul
|
|
|
109
109
|
|
|
110
110
|
### Dependency resolution
|
|
111
111
|
|
|
112
|
-
- `sv.init()` resolves `package.json#sv` with PubGrub and installs/syncs submodules to the resolved versions. It also adds the modules dir to `workspaces` in `package.json` when it is missing.
|
|
112
|
+
- `sv.init()` resolves `package.json#sv` with PubGrub and installs/syncs submodules to the resolved versions. It also adds the modules dir to `workspaces` in `package.json` when it is missing, and runs `npm install` when anything changed. All mutations (`put`, `delete`, updates) run `npm install` automatically after applying.
|
|
113
113
|
- `sv.getResolution()` returns the selected version and selected-version dependencies for every resolved module.
|
|
114
|
+
- The working copy of an installed submodule is the source of truth for its checked-out version: dependencies edited locally but not yet published as a tag take part in the resolution immediately. The overlay applies only to the version tag `HEAD` points at, and only when that version exists on the remote — a `HEAD` without a version tag (mid-publish) or a local-only tag falls back to the remote manifest.
|
|
114
115
|
- `new PubGrub(source).resolve(rootDeps)` runs the resolver with a custom entry source, which is useful for tests and non-GitHub registries.
|
|
115
116
|
|
|
116
117
|
### Installing, updating and deleting modules
|
|
@@ -196,8 +197,8 @@ try {
|
|
|
196
197
|
}
|
|
197
198
|
```
|
|
198
199
|
|
|
199
|
-
## Submodule dependencies
|
|
200
|
+
## Submodule dependencies
|
|
200
201
|
|
|
201
|
-
|
|
202
|
+
Submodules can contain their own dependencies specified in `package.json` as `sv` object.
|
|
202
203
|
|
|
203
|
-
To install submodule
|
|
204
|
+
To install a submodule into a submodule, run `npx sv put <git_url> <target_submodule>`
|
package/dist/src/entryStore.d.ts
CHANGED
package/dist/src/entryStore.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.entryStore = exports.EntryStore = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
4
8
|
const errors_1 = require("./errors");
|
|
5
9
|
const git_1 = require("./git");
|
|
10
|
+
const pkgJSONManager_1 = require("./pkgJSONManager");
|
|
11
|
+
const runOptions_1 = require("./runOptions");
|
|
12
|
+
const versionUtil_1 = require("./versionUtil");
|
|
6
13
|
/*
|
|
7
14
|
* Оверрайды без parent применяются к корню: add добавляет/меняет
|
|
8
15
|
* диапазон по url, delete убирает зависимость по имени модуля.
|
|
@@ -52,12 +59,34 @@ class EntryStore {
|
|
|
52
59
|
this.rememberUrl(name, depUrl);
|
|
53
60
|
return [name, constraint];
|
|
54
61
|
}));
|
|
62
|
+
/*
|
|
63
|
+
* Рабочая копия сабмодуля — источник правды для checkout'нутой версии:
|
|
64
|
+
* зависимости, изменённые локально и ещё не опубликованные тегом,
|
|
65
|
+
* видны резолверу сразу. Применяется только к версии на HEAD (по тегам)
|
|
66
|
+
* и только если такая версия есть в remote-наборе: HEAD без тега
|
|
67
|
+
* (середина publish) или локальный тег вне remote — оверлей пропускается.
|
|
68
|
+
*/
|
|
69
|
+
this.localOverlay = async (name, versions) => {
|
|
70
|
+
if (!runOptions_1.RunOptions.cwd || !runOptions_1.RunOptions.modulesDir)
|
|
71
|
+
return;
|
|
72
|
+
const dir = path_1.default.join(runOptions_1.RunOptions.cwd, runOptions_1.RunOptions.modulesDir, name);
|
|
73
|
+
if (!await git_1.git.local.isGitRepo(dir))
|
|
74
|
+
return;
|
|
75
|
+
const version = versionUtil_1.versionUtil.latest(await git_1.git.local.tagsAtHead(dir));
|
|
76
|
+
if (!version || !versions[version])
|
|
77
|
+
return;
|
|
78
|
+
const pkg = await pkgJSONManager_1.pkgJSONManager.read(name);
|
|
79
|
+
if (!pkg)
|
|
80
|
+
return;
|
|
81
|
+
versions[version] = this.normalizeDependencies(pkg.sv || {});
|
|
82
|
+
};
|
|
55
83
|
this.load = async (url, name) => {
|
|
56
84
|
const fetched = await git_1.git.api.fetchVersions(url);
|
|
57
85
|
const versions = {};
|
|
58
86
|
fetched.forEach(({ version, pkg }) => {
|
|
59
87
|
versions[version] = this.normalizeDependencies(pkg?.sv || {});
|
|
60
88
|
});
|
|
89
|
+
await this.localOverlay(name, versions);
|
|
61
90
|
return { name, url, versions };
|
|
62
91
|
};
|
|
63
92
|
this.resolveIdentity = (depPath) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entryStore.js","sourceRoot":"","sources":["../../src/entryStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entryStore.js","sourceRoot":"","sources":["../../src/entryStore.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare const ERR: {
|
|
|
11
11
|
readonly CIRCULAR_DEPENDENCY: "CIRCULAR_DEPENDENCY";
|
|
12
12
|
readonly UNKNOWN_VERSION: "UNKNOWN_VERSION";
|
|
13
13
|
readonly GIT_DIRTY_SWITCH_CONFLICT: "GIT_DIRTY_SWITCH_CONFLICT";
|
|
14
|
+
readonly NPM_INSTALL_FAILED: "NPM_INSTALL_FAILED";
|
|
14
15
|
};
|
|
15
16
|
export type TSVErrorCode = keyof typeof ERR;
|
|
16
17
|
export type TSVErrorDetails = {
|
package/dist/src/errors.js
CHANGED
|
@@ -14,6 +14,7 @@ exports.ERR = {
|
|
|
14
14
|
CIRCULAR_DEPENDENCY: 'CIRCULAR_DEPENDENCY',
|
|
15
15
|
UNKNOWN_VERSION: 'UNKNOWN_VERSION',
|
|
16
16
|
GIT_DIRTY_SWITCH_CONFLICT: 'GIT_DIRTY_SWITCH_CONFLICT',
|
|
17
|
+
NPM_INSTALL_FAILED: 'NPM_INSTALL_FAILED',
|
|
17
18
|
};
|
|
18
19
|
/*
|
|
19
20
|
* Единственный тип ошибки, который уходит наружу из методов SV.
|
package/dist/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,4BAA4B,EAAE,8BAA8B;IAC5D,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,yBAAyB,EAAE,2BAA2B;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,4BAA4B,EAAE,8BAA8B;IAC5D,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,yBAAyB,EAAE,2BAA2B;IACtD,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAcX;;;GAGG;AACH,MAAa,OAAQ,SAAQ,KAAK;IAChC,YACS,KAAmB,EACnB,UAA2B,EAAE;QAEpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAHN,UAAK,GAAL,KAAK,CAAc;QACnB,YAAO,GAAP,OAAO,CAAsB;IAGtC,CAAC;CACF;AAPD,0BAOC"}
|
package/dist/src/npm.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.npm = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const runOptions_1 = require("./runOptions");
|
|
7
|
+
const errors_1 = require("./errors");
|
|
8
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
9
|
+
/* stderr упавшей npm-команды — единственный источник настоящей причины */
|
|
10
|
+
const stderrOf = (error) => (error?.stderr || '').trim();
|
|
11
|
+
exports.npm = {
|
|
12
|
+
/*
|
|
13
|
+
* Линкует сабмодули в node_modules и ставит их зависимости.
|
|
14
|
+
* Запускается в корне проекта после любой синхронизации модулей.
|
|
15
|
+
*/
|
|
16
|
+
install: async () => {
|
|
17
|
+
try {
|
|
18
|
+
await execAsync('npm install', { cwd: runOptions_1.RunOptions.cwd });
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
throw new errors_1.SVError('NPM_INSTALL_FAILED', { reason: stderrOf(error) });
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=npm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/npm.ts"],"names":[],"mappings":";;;AAAA,iDAAqC;AACrC,+BAAiC;AACjC,6CAA0C;AAC1C,qCAAmC;AAEnC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,CAC1C,KAA6B,EAAE,MAAM,IAAI,EAAE,CAC7C,CAAC,IAAI,EAAE,CAAC;AAEI,QAAA,GAAG,GAAG;IACjB;;;OAGG;IACH,OAAO,EAAE,KAAK,IAAmB,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,gBAAO,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/dist/src/printError.js
CHANGED
|
@@ -93,6 +93,10 @@ const printSVError = (error) => {
|
|
|
93
93
|
case errors_1.ERR.GIT_DIRTY_SWITCH_CONFLICT:
|
|
94
94
|
return 'Checkout failed: uncommitted changes cannot be carried over'
|
|
95
95
|
+ ' - move them manually';
|
|
96
|
+
case errors_1.ERR.NPM_INSTALL_FAILED:
|
|
97
|
+
return `npm install failed${details.reason
|
|
98
|
+
? `: ${String(details.reason)}`
|
|
99
|
+
: ''}`;
|
|
96
100
|
default:
|
|
97
101
|
return code;
|
|
98
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printError.js","sourceRoot":"","sources":["../../src/printError.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"printError.js","sourceRoot":"","sources":["../../src/printError.ts"],"names":[],"mappings":"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"}
|
package/dist/src/sv.js
CHANGED
|
@@ -12,6 +12,7 @@ const entryStore_1 = require("./entryStore");
|
|
|
12
12
|
const runOptions_1 = require("./runOptions");
|
|
13
13
|
const versionUtil_1 = require("./versionUtil");
|
|
14
14
|
const git_1 = require("./git");
|
|
15
|
+
const npm_1 = require("./npm");
|
|
15
16
|
const errors_1 = require("./errors");
|
|
16
17
|
/*
|
|
17
18
|
* Правка package.json родителя (внутри его сабмодуля): parent-level
|
|
@@ -104,20 +105,27 @@ class SV {
|
|
|
104
105
|
/*
|
|
105
106
|
* Синк рабочей копии с резолвом: недостающие сабмодули добавляются,
|
|
106
107
|
* версии переключаются, исчезнувшие из резолва модули удаляются.
|
|
108
|
+
* Возвращает true, если рабочая копия изменилась.
|
|
107
109
|
*/
|
|
108
110
|
this.syncModules = async (resolution) => {
|
|
109
111
|
const previous = this.resolution || {};
|
|
112
|
+
let changed = false;
|
|
110
113
|
await Promise.all(Object.entries(resolution).map(async ([name, entry]) => {
|
|
111
114
|
const dir = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
|
|
112
115
|
if (!await git_1.git.local.isGitRepo(dir)) {
|
|
113
116
|
await git_1.git.local.addSubmodule(entry.url);
|
|
117
|
+
changed = true;
|
|
114
118
|
}
|
|
115
119
|
if (await git_1.git.local.currentVersion(name) !== entry.version) {
|
|
116
120
|
await git_1.git.local.checkout(name, entry.version);
|
|
121
|
+
changed = true;
|
|
117
122
|
}
|
|
118
123
|
}));
|
|
119
124
|
const removed = Object.keys(previous).filter(name => !resolution[name]);
|
|
125
|
+
if (removed.length)
|
|
126
|
+
changed = true;
|
|
120
127
|
await Promise.all(removed.map(name => git_1.git.local.rm(name)));
|
|
128
|
+
return changed;
|
|
121
129
|
};
|
|
122
130
|
/*
|
|
123
131
|
* Общий путь мутаций: проверка через resolve внутри simulate, и только
|
|
@@ -142,6 +150,11 @@ class SV {
|
|
|
142
150
|
baseJson.sv = nextRootDeps;
|
|
143
151
|
await pkgJSONManager_1.pkgJSONManager.write(baseJson);
|
|
144
152
|
}
|
|
153
|
+
/*
|
|
154
|
+
* package.json уже записан — npm подтянет workspaces и зависимости
|
|
155
|
+
* нового набора модулей.
|
|
156
|
+
*/
|
|
157
|
+
await npm_1.npm.install();
|
|
145
158
|
this.resolution = resolution;
|
|
146
159
|
};
|
|
147
160
|
this.init = async () => {
|
|
@@ -152,12 +165,20 @@ class SV {
|
|
|
152
165
|
throw new errors_1.SVError('NOT_A_GIT_REPO');
|
|
153
166
|
}
|
|
154
167
|
const dirChanged = await this.syncModulesDir(baseJson);
|
|
155
|
-
|
|
168
|
+
const jsonChanged = ensureWorkspaces(baseJson) || dirChanged;
|
|
169
|
+
if (jsonChanged) {
|
|
156
170
|
await pkgJSONManager_1.pkgJSONManager.write(baseJson);
|
|
157
171
|
}
|
|
158
172
|
const rootDeps = (baseJson.sv || {});
|
|
159
173
|
const resolution = await this.resolveDeps(rootDeps);
|
|
160
|
-
await this.syncModules(resolution);
|
|
174
|
+
const modulesChanged = await this.syncModules(resolution);
|
|
175
|
+
/*
|
|
176
|
+
* npm install запускается только когда реально что-то изменилось —
|
|
177
|
+
* иначе каждый CLI-вызов (init идёт перед любой командой) платил
|
|
178
|
+
* бы за полный прогон npm.
|
|
179
|
+
*/
|
|
180
|
+
if (jsonChanged || modulesChanged)
|
|
181
|
+
await npm_1.npm.install();
|
|
161
182
|
this.resolution = resolution;
|
|
162
183
|
};
|
|
163
184
|
this.getResolution = () => {
|
package/dist/src/sv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sv.js","sourceRoot":"","sources":["../../src/sv.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sv.js","sourceRoot":"","sources":["../../src/sv.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { entryStore } from '../entryStore';
|
|
2
2
|
import { git } from '../git';
|
|
3
|
+
import { pkgJSONManager } from '../pkgJSONManager';
|
|
4
|
+
import { RunOptions } from '../runOptions';
|
|
3
5
|
|
|
4
6
|
jest.mock('../git', () => {
|
|
5
7
|
const actual = jest.requireActual('../git');
|
|
@@ -9,11 +11,21 @@ jest.mock('../git', () => {
|
|
|
9
11
|
git: {
|
|
10
12
|
...actual.git,
|
|
11
13
|
api: { fetchVersions: jest.fn() },
|
|
14
|
+
local: {
|
|
15
|
+
...actual.git.local,
|
|
16
|
+
isGitRepo: jest.fn(),
|
|
17
|
+
tagsAtHead: jest.fn(),
|
|
18
|
+
},
|
|
12
19
|
},
|
|
13
20
|
};
|
|
14
21
|
});
|
|
15
22
|
|
|
23
|
+
jest.mock('../pkgJSONManager');
|
|
24
|
+
|
|
16
25
|
const fetchVersionsMock = git.api.fetchVersions as jest.Mock;
|
|
26
|
+
const isGitRepoMock = git.local.isGitRepo as jest.Mock;
|
|
27
|
+
const tagsAtHeadMock = git.local.tagsAtHead as jest.Mock;
|
|
28
|
+
const readPkgMock = pkgJSONManager.read as jest.Mock;
|
|
17
29
|
const url = (name: string) => `git@git:repo/${name}.git`;
|
|
18
30
|
|
|
19
31
|
beforeEach(() => {
|
|
@@ -246,3 +258,83 @@ describe('entryStore.simulate', () => {
|
|
|
246
258
|
expect(cb).not.toHaveBeenCalled();
|
|
247
259
|
});
|
|
248
260
|
});
|
|
261
|
+
|
|
262
|
+
describe('entryStore local overlay', () => {
|
|
263
|
+
beforeEach(() => {
|
|
264
|
+
RunOptions.cwd = '/project';
|
|
265
|
+
RunOptions.modulesDir = 'addons';
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
afterEach(() => {
|
|
269
|
+
RunOptions.cwd = '';
|
|
270
|
+
RunOptions.modulesDir = '';
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
it('overlays the local manifest on the checked-out version', async () => {
|
|
274
|
+
fetchVersionsMock.mockResolvedValueOnce([
|
|
275
|
+
{ version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
|
|
276
|
+
{ version: '2.0.0', pkg: { sv: { [url('C')]: '^2.0.0' } } },
|
|
277
|
+
]);
|
|
278
|
+
isGitRepoMock.mockResolvedValueOnce(true);
|
|
279
|
+
tagsAtHeadMock.mockResolvedValueOnce(['1.0.0']);
|
|
280
|
+
readPkgMock.mockResolvedValueOnce({ sv: { [url('B')]: '^0.2.0' } });
|
|
281
|
+
|
|
282
|
+
const entry = await entryStore.fetch(url('A'));
|
|
283
|
+
|
|
284
|
+
expect(entry.versions['1.0.0']).toEqual({ B: '^0.2.0' });
|
|
285
|
+
expect(entry.versions['2.0.0']).toEqual({ C: '^2.0.0' });
|
|
286
|
+
expect(entryStore.urlOf('B')).toBe(url('B'));
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
it('keeps the remote manifest when HEAD has no version tag', async () => {
|
|
290
|
+
fetchVersionsMock.mockResolvedValueOnce([
|
|
291
|
+
{ version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
|
|
292
|
+
]);
|
|
293
|
+
isGitRepoMock.mockResolvedValueOnce(true);
|
|
294
|
+
tagsAtHeadMock.mockResolvedValueOnce([]);
|
|
295
|
+
|
|
296
|
+
const entry = await entryStore.fetch(url('A'));
|
|
297
|
+
|
|
298
|
+
expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
|
|
299
|
+
expect(readPkgMock).not.toHaveBeenCalled();
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
it('keeps the remote manifest when the module is not installed', async () => {
|
|
303
|
+
fetchVersionsMock.mockResolvedValueOnce([
|
|
304
|
+
{ version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
|
|
305
|
+
]);
|
|
306
|
+
isGitRepoMock.mockResolvedValueOnce(false);
|
|
307
|
+
|
|
308
|
+
const entry = await entryStore.fetch(url('A'));
|
|
309
|
+
|
|
310
|
+
expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
|
|
311
|
+
expect(tagsAtHeadMock).not.toHaveBeenCalled();
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
it('skips the overlay when the local tag is not on remote', async () => {
|
|
315
|
+
fetchVersionsMock.mockResolvedValueOnce([
|
|
316
|
+
{ version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
|
|
317
|
+
]);
|
|
318
|
+
isGitRepoMock.mockResolvedValueOnce(true);
|
|
319
|
+
tagsAtHeadMock.mockResolvedValueOnce(['9.9.9']);
|
|
320
|
+
|
|
321
|
+
const entry = await entryStore.fetch(url('A'));
|
|
322
|
+
|
|
323
|
+
expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
|
|
324
|
+
expect(entry.versions['9.9.9']).toBeUndefined();
|
|
325
|
+
expect(readPkgMock).not.toHaveBeenCalled();
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
it('keeps the remote manifest without a local package.json', async () => {
|
|
329
|
+
fetchVersionsMock.mockResolvedValueOnce([
|
|
330
|
+
{ version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
|
|
331
|
+
]);
|
|
332
|
+
isGitRepoMock.mockResolvedValueOnce(true);
|
|
333
|
+
tagsAtHeadMock.mockResolvedValueOnce(['1.0.0']);
|
|
334
|
+
readPkgMock.mockResolvedValueOnce(null);
|
|
335
|
+
|
|
336
|
+
const entry = await entryStore.fetch(url('A'));
|
|
337
|
+
|
|
338
|
+
expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
|
|
339
|
+
});
|
|
340
|
+
});
|
package/src/__tests__/sv.test.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SV } from '../sv';
|
|
2
2
|
import { PubGrub } from '../PubGrub';
|
|
3
3
|
import { git } from '../git';
|
|
4
|
+
import { npm } from '../npm';
|
|
4
5
|
import { pkgJSONManager } from '../pkgJSONManager';
|
|
5
6
|
import { readFile } from 'fs/promises';
|
|
6
7
|
|
|
@@ -40,12 +41,19 @@ jest.mock('../pkgJSONManager', () => ({
|
|
|
40
41
|
},
|
|
41
42
|
}));
|
|
42
43
|
|
|
44
|
+
jest.mock('../npm', () => ({
|
|
45
|
+
npm: {
|
|
46
|
+
install: jest.fn(async () => undefined),
|
|
47
|
+
},
|
|
48
|
+
}));
|
|
49
|
+
|
|
43
50
|
const PubGrubMock = PubGrub as unknown as jest.Mock;
|
|
44
51
|
const resolveMock = jest.fn();
|
|
45
52
|
const readMock = pkgJSONManager.read as jest.Mock;
|
|
46
53
|
const writeMock = pkgJSONManager.write as jest.Mock;
|
|
47
54
|
const readFileMock = readFile as jest.Mock;
|
|
48
55
|
const localMock = git.local as unknown as Record<string, jest.Mock>;
|
|
56
|
+
const npmInstallMock = npm.install as jest.Mock;
|
|
49
57
|
const url = (name: string) => `git@git:repo/${name}.git`;
|
|
50
58
|
|
|
51
59
|
const entry = (
|
|
@@ -202,6 +210,41 @@ describe('SV.init', () => {
|
|
|
202
210
|
'sv-dir': 'addons',
|
|
203
211
|
});
|
|
204
212
|
});
|
|
213
|
+
|
|
214
|
+
it('runs npm install when modules change', async () => {
|
|
215
|
+
readMock.mockResolvedValue({
|
|
216
|
+
sv: { [url('A')]: '*' },
|
|
217
|
+
workspaces: ['modules/*'],
|
|
218
|
+
'sv-dir': 'modules',
|
|
219
|
+
});
|
|
220
|
+
localMock.isGitRepo.mockImplementation(
|
|
221
|
+
async (dir: string) => dir === '/project',
|
|
222
|
+
);
|
|
223
|
+
resolveMock.mockResolvedValue({
|
|
224
|
+
A: entry('A', { '1.0.0': {} }, '1.0.0'),
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
const sv = new SV('/project');
|
|
228
|
+
|
|
229
|
+
await sv.init();
|
|
230
|
+
|
|
231
|
+
expect(npmInstallMock).toHaveBeenCalled();
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
it('skips npm install when nothing changed', async () => {
|
|
235
|
+
readMock.mockResolvedValue({
|
|
236
|
+
sv: {},
|
|
237
|
+
workspaces: ['modules/*'],
|
|
238
|
+
'sv-dir': 'modules',
|
|
239
|
+
});
|
|
240
|
+
resolveMock.mockResolvedValue({});
|
|
241
|
+
|
|
242
|
+
const sv = new SV('/project');
|
|
243
|
+
|
|
244
|
+
await sv.init();
|
|
245
|
+
|
|
246
|
+
expect(npmInstallMock).not.toHaveBeenCalled();
|
|
247
|
+
});
|
|
205
248
|
});
|
|
206
249
|
|
|
207
250
|
describe('SV.put', () => {
|
|
@@ -223,6 +266,7 @@ describe('SV.put', () => {
|
|
|
223
266
|
});
|
|
224
267
|
expect(localMock.addSubmodule).toHaveBeenCalledWith(url('B'));
|
|
225
268
|
expect(localMock.checkout).toHaveBeenCalledWith('B', '1.2.0');
|
|
269
|
+
expect(npmInstallMock).toHaveBeenCalled();
|
|
226
270
|
});
|
|
227
271
|
|
|
228
272
|
it('falls back to * when version is omitted', async () => {
|
|
@@ -331,6 +375,17 @@ describe('SV.put', () => {
|
|
|
331
375
|
);
|
|
332
376
|
expect(writeMock).not.toHaveBeenCalled();
|
|
333
377
|
expect(localMock.addSubmodule).not.toHaveBeenCalled();
|
|
378
|
+
expect(npmInstallMock).not.toHaveBeenCalled();
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
it('propagates an npm install failure', async () => {
|
|
382
|
+
readMock.mockResolvedValue({ sv: {} });
|
|
383
|
+
resolveMock.mockResolvedValue({});
|
|
384
|
+
npmInstallMock.mockRejectedValueOnce(new Error('npm failed'));
|
|
385
|
+
|
|
386
|
+
const sv = new SV('/project');
|
|
387
|
+
|
|
388
|
+
await expect(sv.put(url('B'))).rejects.toThrow('npm failed');
|
|
334
389
|
});
|
|
335
390
|
});
|
|
336
391
|
|
|
@@ -358,6 +413,7 @@ describe('SV.delete', () => {
|
|
|
358
413
|
'sv-dir': 'modules',
|
|
359
414
|
});
|
|
360
415
|
expect(localMock.rm).toHaveBeenCalledWith('A');
|
|
416
|
+
expect(npmInstallMock).toHaveBeenCalled();
|
|
361
417
|
});
|
|
362
418
|
|
|
363
419
|
it('rejects deleting a module missing from rootDeps', async () => {
|
package/src/entryStore.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import path from 'path';
|
|
1
2
|
import { SVError } from './errors';
|
|
2
3
|
import { git } from './git';
|
|
4
|
+
import { pkgJSONManager } from './pkgJSONManager';
|
|
5
|
+
import { RunOptions } from './runOptions';
|
|
6
|
+
import { versionUtil } from './versionUtil';
|
|
3
7
|
import type {
|
|
4
8
|
IEntrySource,
|
|
5
9
|
IOverride,
|
|
@@ -80,6 +84,34 @@ export class EntryStore implements IEntrySource {
|
|
|
80
84
|
}),
|
|
81
85
|
);
|
|
82
86
|
|
|
87
|
+
/*
|
|
88
|
+
* Рабочая копия сабмодуля — источник правды для checkout'нутой версии:
|
|
89
|
+
* зависимости, изменённые локально и ещё не опубликованные тегом,
|
|
90
|
+
* видны резолверу сразу. Применяется только к версии на HEAD (по тегам)
|
|
91
|
+
* и только если такая версия есть в remote-наборе: HEAD без тега
|
|
92
|
+
* (середина publish) или локальный тег вне remote — оверлей пропускается.
|
|
93
|
+
*/
|
|
94
|
+
private localOverlay = async (
|
|
95
|
+
name: string,
|
|
96
|
+
versions: Record<string, TDependencies>,
|
|
97
|
+
): Promise<void> => {
|
|
98
|
+
if (!RunOptions.cwd || !RunOptions.modulesDir) return;
|
|
99
|
+
|
|
100
|
+
const dir = path.join(RunOptions.cwd, RunOptions.modulesDir, name);
|
|
101
|
+
|
|
102
|
+
if (!await git.local.isGitRepo(dir)) return;
|
|
103
|
+
|
|
104
|
+
const version = versionUtil.latest(await git.local.tagsAtHead(dir));
|
|
105
|
+
|
|
106
|
+
if (!version || !versions[version]) return;
|
|
107
|
+
|
|
108
|
+
const pkg = await pkgJSONManager.read(name);
|
|
109
|
+
|
|
110
|
+
if (!pkg) return;
|
|
111
|
+
|
|
112
|
+
versions[version] = this.normalizeDependencies(pkg.sv || {});
|
|
113
|
+
};
|
|
114
|
+
|
|
83
115
|
private load = async (url: string, name: string): Promise<IPackageEntry> => {
|
|
84
116
|
const fetched = await git.api.fetchVersions(url);
|
|
85
117
|
const versions: Record<string, TDependencies> = {};
|
|
@@ -88,6 +120,8 @@ export class EntryStore implements IEntrySource {
|
|
|
88
120
|
versions[version] = this.normalizeDependencies(pkg?.sv || {});
|
|
89
121
|
});
|
|
90
122
|
|
|
123
|
+
await this.localOverlay(name, versions);
|
|
124
|
+
|
|
91
125
|
return { name, url, versions };
|
|
92
126
|
};
|
|
93
127
|
|
package/src/errors.ts
CHANGED
|
@@ -11,6 +11,7 @@ export const ERR = {
|
|
|
11
11
|
CIRCULAR_DEPENDENCY: 'CIRCULAR_DEPENDENCY',
|
|
12
12
|
UNKNOWN_VERSION: 'UNKNOWN_VERSION',
|
|
13
13
|
GIT_DIRTY_SWITCH_CONFLICT: 'GIT_DIRTY_SWITCH_CONFLICT',
|
|
14
|
+
NPM_INSTALL_FAILED: 'NPM_INSTALL_FAILED',
|
|
14
15
|
} as const;
|
|
15
16
|
|
|
16
17
|
export type TSVErrorCode = keyof typeof ERR;
|
package/src/npm.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { RunOptions } from './runOptions';
|
|
4
|
+
import { SVError } from './errors';
|
|
5
|
+
|
|
6
|
+
const execAsync = promisify(exec);
|
|
7
|
+
|
|
8
|
+
/* stderr упавшей npm-команды — единственный источник настоящей причины */
|
|
9
|
+
const stderrOf = (error: unknown): string => (
|
|
10
|
+
(error as { stderr?: string })?.stderr || ''
|
|
11
|
+
).trim();
|
|
12
|
+
|
|
13
|
+
export const npm = {
|
|
14
|
+
/*
|
|
15
|
+
* Линкует сабмодули в node_modules и ставит их зависимости.
|
|
16
|
+
* Запускается в корне проекта после любой синхронизации модулей.
|
|
17
|
+
*/
|
|
18
|
+
install: async (): Promise<void> => {
|
|
19
|
+
try {
|
|
20
|
+
await execAsync('npm install', { cwd: RunOptions.cwd });
|
|
21
|
+
} catch (error) {
|
|
22
|
+
throw new SVError('NPM_INSTALL_FAILED', { reason: stderrOf(error) });
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
};
|
package/src/printError.ts
CHANGED
|
@@ -121,6 +121,10 @@ const printSVError = (error: SVError): string => {
|
|
|
121
121
|
case ERR.GIT_DIRTY_SWITCH_CONFLICT:
|
|
122
122
|
return 'Checkout failed: uncommitted changes cannot be carried over'
|
|
123
123
|
+ ' - move them manually';
|
|
124
|
+
case ERR.NPM_INSTALL_FAILED:
|
|
125
|
+
return `npm install failed${details.reason
|
|
126
|
+
? `: ${String(details.reason)}`
|
|
127
|
+
: ''}`;
|
|
124
128
|
default:
|
|
125
129
|
return code;
|
|
126
130
|
}
|
package/src/sv.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { EntryStore } from './entryStore';
|
|
|
11
11
|
import { RunOptions } from './runOptions';
|
|
12
12
|
import { versionUtil } from './versionUtil';
|
|
13
13
|
import { git, GitError } from './git';
|
|
14
|
+
import { npm } from './npm';
|
|
14
15
|
import { SVError } from './errors';
|
|
15
16
|
|
|
16
17
|
/*
|
|
@@ -151,25 +152,35 @@ export class SV {
|
|
|
151
152
|
/*
|
|
152
153
|
* Синк рабочей копии с резолвом: недостающие сабмодули добавляются,
|
|
153
154
|
* версии переключаются, исчезнувшие из резолва модули удаляются.
|
|
155
|
+
* Возвращает true, если рабочая копия изменилась.
|
|
154
156
|
*/
|
|
155
|
-
private syncModules = async (
|
|
157
|
+
private syncModules = async (
|
|
158
|
+
resolution: TPubGrubResult,
|
|
159
|
+
): Promise<boolean> => {
|
|
156
160
|
const previous = this.resolution || {};
|
|
161
|
+
let changed = false;
|
|
157
162
|
|
|
158
163
|
await Promise.all(Object.entries(resolution).map(async ([name, entry]) => {
|
|
159
164
|
const dir = path.join(RunOptions.modulesDir, name);
|
|
160
165
|
|
|
161
166
|
if (!await git.local.isGitRepo(dir)) {
|
|
162
167
|
await git.local.addSubmodule(entry.url);
|
|
168
|
+
changed = true;
|
|
163
169
|
}
|
|
164
170
|
|
|
165
171
|
if (await git.local.currentVersion(name) !== entry.version) {
|
|
166
172
|
await git.local.checkout(name, entry.version);
|
|
173
|
+
changed = true;
|
|
167
174
|
}
|
|
168
175
|
}));
|
|
169
176
|
|
|
170
177
|
const removed = Object.keys(previous).filter(name => !resolution[name]);
|
|
171
178
|
|
|
179
|
+
if (removed.length) changed = true;
|
|
180
|
+
|
|
172
181
|
await Promise.all(removed.map(name => git.local.rm(name)));
|
|
182
|
+
|
|
183
|
+
return changed;
|
|
173
184
|
};
|
|
174
185
|
|
|
175
186
|
/*
|
|
@@ -207,6 +218,12 @@ export class SV {
|
|
|
207
218
|
await pkgJSONManager.write(baseJson);
|
|
208
219
|
}
|
|
209
220
|
|
|
221
|
+
/*
|
|
222
|
+
* package.json уже записан — npm подтянет workspaces и зависимости
|
|
223
|
+
* нового набора модулей.
|
|
224
|
+
*/
|
|
225
|
+
await npm.install();
|
|
226
|
+
|
|
210
227
|
this.resolution = resolution;
|
|
211
228
|
};
|
|
212
229
|
|
|
@@ -220,15 +237,22 @@ export class SV {
|
|
|
220
237
|
}
|
|
221
238
|
|
|
222
239
|
const dirChanged = await this.syncModulesDir(baseJson);
|
|
240
|
+
const jsonChanged = ensureWorkspaces(baseJson) || dirChanged;
|
|
223
241
|
|
|
224
|
-
if (
|
|
242
|
+
if (jsonChanged) {
|
|
225
243
|
await pkgJSONManager.write(baseJson);
|
|
226
244
|
}
|
|
227
245
|
|
|
228
246
|
const rootDeps = (baseJson.sv || {}) as TDependencies;
|
|
229
247
|
const resolution = await this.resolveDeps(rootDeps);
|
|
248
|
+
const modulesChanged = await this.syncModules(resolution);
|
|
230
249
|
|
|
231
|
-
|
|
250
|
+
/*
|
|
251
|
+
* npm install запускается только когда реально что-то изменилось —
|
|
252
|
+
* иначе каждый CLI-вызов (init идёт перед любой командой) платил
|
|
253
|
+
* бы за полный прогон npm.
|
|
254
|
+
*/
|
|
255
|
+
if (jsonChanged || modulesChanged) await npm.install();
|
|
232
256
|
|
|
233
257
|
this.resolution = resolution;
|
|
234
258
|
};
|