generated from oliversalzburg/yarn3-typescript-web-snowpack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
constraints.pro
24 lines (21 loc) · 1.35 KB
/
constraints.pro
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
constraints_min_version(1).
% This file is written in Prolog
% It contains rules that the project must respect.
% In order to see them in action, run `yarn constraints source`
% This rule will enforce that a workspace MUST depend on the same version of a dependency as the one used by the other workspaces
gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange2, DependencyType) :-
% Iterates over all dependencies from all workspaces
workspace_has_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType),
% Iterates over similarly-named dependencies from all workspaces (again)
workspace_has_dependency(OtherWorkspaceCwd, DependencyIdent, DependencyRange2, DependencyType2),
% Ignore peer dependencies
DependencyType \= 'peerDependencies',
DependencyType2 \= 'peerDependencies'.
% This rule enforces that all packages that depend on TypeScript must also depend on tslib
gen_enforced_dependency(WorkspaceCwd, 'tslib', 'range', 'dependencies') :-
% Iterates over all TypeScript dependencies from all workspaces
workspace_has_dependency(WorkspaceCwd, 'typescript', _, DependencyType),
% Ignores the case when TypeScript is a peer dependency
DependencyType \= 'peerDependencies',
% Only proceed if the workspace doesn't already depend on tslib
\+ workspace_has_dependency(WorkspaceCwd, 'tslib', _, _).