Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2c716b3

Browse files
committed
refactor(schematics): add fixed dependency versions
1 parent2e4672c commit2c716b3

File tree

9 files changed

+222
-61
lines changed

9 files changed

+222
-61
lines changed
Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,59 @@
1-
import{chain,Rule,SchematicContext,SchematicsException,Tree}from'@angular-devkit/schematics';
1+
import{Rule,SchematicContext,SchematicsException,Tree}from'@angular-devkit/schematics';
22
import{NodePackageInstallTask}from'@angular-devkit/schematics/tasks';
3-
import{addPackageToPackageJson,getPackageVersionFromPackageJson,PackageJson}from'./package-config';
3+
import{addPackageJsonDependency,NodeDependency,NodeDependencyType}from'@schematics/angular/utility/dependencies';
4+
import{getPackageVersionFromPackageJson,PackageJson}from'./package-config';
45
import*aspkgJsonfrom'../../package.json';
56

6-
exportfunctionaddCoreUIAngularChartJs():Rule{
7-
return(tree:Tree,context:SchematicContext)=>{
8-
context.logger.info('Installing @coreui/angular-chartjs ...');
9-
context.addTask(newNodePackageInstallTask());
10-
returntree;
11-
};
12-
}
13-
147
exportfunctionngAdd():Rule{
158
return(tree:Tree,context:SchematicContext)=>{
9+
constpkg=pkgJsonasunknownasPackageJson;
10+
1611
context.logger.info(``);
17-
context.logger.info('Installing @coreui/angular-chartjs dependencies...');
12+
context.logger.info(`Installing${pkg.name} dependencies...`);
13+
1814
constngCoreVersionTag=getPackageVersionFromPackageJson(tree,'@angular/core');
1915
context.logger.info(`@angular/core version${ngCoreVersionTag}`);
2016
if(!ngCoreVersionTag){
2117
thrownewSchematicsException('@angular/core version not found');
2218
}
23-
constpkg=pkgJsonasPackageJson;
24-
constlibPeerDeps:string[]=['@coreui/chartjs','chart.js'];
25-
libPeerDeps.forEach((dep:string)=>{
26-
constversion=pkg.peerDependencies[dep];
27-
context.logger.info(`Including${dep} version${version}`);
28-
addPackageToPackageJson(tree,dep,version);
29-
});
30-
constlibDeps:string[]=['lodash-es'];
31-
libDeps.forEach((dep:string)=>{
32-
constversion=pkg.dependencies[dep];
33-
context.logger.info(`Including${dep} version${version}`);
34-
addPackageToPackageJson(tree,dep,version);
19+
20+
constlibraryDeps:NodeDependency[]=[
21+
{
22+
name:'@coreui/chartjs',
23+
type:NodeDependencyType.Default,
24+
version:pkg.peerDependencies['@coreui/chartjs'],
25+
overwrite:true
26+
},
27+
{
28+
name:'chart.js',
29+
type:NodeDependencyType.Default,
30+
version:pkg.peerDependencies['chart.js'],
31+
overwrite:true
32+
},
33+
{
34+
name:'lodash-es',
35+
type:NodeDependencyType.Default,
36+
version:pkg.dependencies['lodash-es'],
37+
overwrite:true
38+
}
39+
];
40+
41+
libraryDeps.forEach((dep)=>{
42+
addPackageJsonDependency(tree,dep);
43+
context.logger.info(`Added dependency:${dep.name}@${dep.version}`);
3544
});
3645

37-
returnchain([addCoreUIAngularChartJs()]);
46+
constlibrary:NodeDependency={
47+
name:pkg.name,
48+
type:NodeDependencyType.Default,
49+
version:`~${pkg.version}`,
50+
overwrite:true
51+
};
52+
53+
addPackageJsonDependency(tree,library);
54+
context.logger.info(`Installing${library.name}@${library.version}`);
55+
context.addTask(newNodePackageInstallTask());
56+
57+
returntree;
3858
};
3959
}

‎projects/coreui-angular-chartjs/schematics/ng-add/package-config.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import { Tree } from '@angular-devkit/schematics';
1010

1111
exportinterfacePackageJson{
1212
dependencies:Record<string,string>;
13+
name:string;
1314
peerDependencies:Record<string,string>;
15+
version:string;
1416
}
1517

1618
/**
Lines changed: 60 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,77 @@
1-
import{chain,Rule,SchematicContext,SchematicsException,Tree}from'@angular-devkit/schematics';
1+
import{Rule,SchematicContext,SchematicsException,Tree}from'@angular-devkit/schematics';
22
import{NodePackageInstallTask}from'@angular-devkit/schematics/tasks';
3-
import{addPackageToPackageJson,getPackageVersionFromPackageJson,PackageJson}from'./package-config';
3+
import{addPackageJsonDependency,NodeDependency,NodeDependencyType}from'@schematics/angular/utility/dependencies';
4+
import{getPackageVersionFromPackageJson,PackageJson}from'./package-config';
45
import*aspkgJsonfrom'../../package.json';
56

6-
constaddCoreUIIconsAngular=():Rule=>{
7-
return(tree:Tree,context:SchematicContext)=>{
8-
context.logger.info(`Installing @coreui/icons-angular as dependency`);
9-
context.addTask(newNodePackageInstallTask({packageName:'@coreui/icons-angular'}));
10-
returntree;
11-
};
12-
};
13-
14-
constaddCoreUIAngular=():Rule=>{
15-
return(tree:Tree,context:SchematicContext)=>{
16-
context.logger.info(`Installing @coreui/angular as dependency`);
17-
context.addTask(newNodePackageInstallTask());
18-
returntree;
19-
};
20-
};
21-
227
exportfunctionngAdd():Rule{
238
return(tree:Tree,context:SchematicContext)=>{
9+
constpkg=pkgJsonasunknownasPackageJson;
10+
2411
context.logger.info(``);
25-
context.logger.info('Installing @coreui/angular dependencies...');
12+
context.logger.info(`Installing${pkg.name} dependencies...`);
13+
2614
constngCoreVersionTag=getPackageVersionFromPackageJson(tree,'@angular/core');
2715
context.logger.info(`@angular/core version${ngCoreVersionTag}`);
2816
if(!ngCoreVersionTag){
2917
thrownewSchematicsException('@angular/core version not found');
3018
}
31-
constprojDeps=['@angular/animations','@angular/common','@angular/core','@angular/router'];
32-
projDeps.forEach((dep)=>{
33-
addPackageToPackageJson(tree,dep,ngCoreVersionTag);
34-
});
3519

36-
constpkg=pkgJsonasPackageJson;
37-
constlibPeerDeps:string[]=['@angular/cdk','@coreui/coreui'];
38-
libPeerDeps.forEach((dep:string)=>{
39-
constversion=pkg.peerDependencies[dep];
40-
context.logger.info(`Including${dep} version${version}`);
41-
addPackageToPackageJson(tree,dep,version);
20+
constprojectDeps:NodeDependency[]=[
21+
{name:'@angular/animations',type:NodeDependencyType.Default,version:ngCoreVersionTag,overwrite:false},
22+
{name:'@angular/common',type:NodeDependencyType.Default,version:ngCoreVersionTag,overwrite:false},
23+
{name:'@angular/core',type:NodeDependencyType.Default,version:ngCoreVersionTag,overwrite:false},
24+
{name:'@angular/router',type:NodeDependencyType.Default,version:ngCoreVersionTag,overwrite:false}
25+
];
26+
27+
projectDeps.forEach((dep)=>{
28+
addPackageJsonDependency(tree,dep);
29+
context.logger.info(`Added dependency:${dep.name}@${dep.version}`);
4230
});
43-
constlibDeps:string[]=['@popperjs/core'];
44-
libDeps.forEach((dep:string)=>{
45-
constversion=pkg.dependencies[dep];
46-
context.logger.info(`Including${dep} version${version}`);
47-
addPackageToPackageJson(tree,dep,version);
31+
32+
constlibraryDeps:NodeDependency[]=[
33+
{
34+
name:'@angular/cdk',
35+
type:NodeDependencyType.Default,
36+
version:pkg.peerDependencies['@angular/cdk'],
37+
overwrite:false
38+
},
39+
{
40+
name:'@coreui/coreui',
41+
type:NodeDependencyType.Default,
42+
version:pkg.peerDependencies['@coreui/coreui'],
43+
overwrite:true
44+
},
45+
{
46+
name:'@coreui/icons-angular',
47+
type:NodeDependencyType.Default,
48+
version:pkg.peerDependencies['@coreui/icons-angular'],
49+
overwrite:true
50+
},
51+
{
52+
name:'@popperjs/core',
53+
type:NodeDependencyType.Default,
54+
version:pkg.dependencies['@popperjs/core'],
55+
overwrite:true
56+
}
57+
];
58+
59+
libraryDeps.forEach((dep)=>{
60+
addPackageJsonDependency(tree,dep);
61+
context.logger.info(`Added dependency:${dep.name}@${dep.version}`);
4862
});
4963

50-
returnchain([addCoreUIIconsAngular(),addCoreUIAngular()]);
64+
constlibrary:NodeDependency={
65+
name:pkg.name,
66+
type:NodeDependencyType.Default,
67+
version:`~${pkg.version}`,
68+
overwrite:true
69+
};
70+
71+
addPackageJsonDependency(tree,library);
72+
context.logger.info(`Installing${library.name}@${library.version}`);
73+
context.addTask(newNodePackageInstallTask());
74+
75+
returntree;
5176
};
5277
}

‎projects/coreui-angular/schematics/ng-add/package-config.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import { Tree } from '@angular-devkit/schematics';
1010

1111
exportinterfacePackageJson{
1212
dependencies:Record<string,string>;
13+
name:string;
1314
peerDependencies:Record<string,string>;
15+
version:string;
1416
}
1517

1618
/**

‎projects/coreui-angular/tsconfig.json‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
},
1010
{
1111
"path":"./tsconfig.spec.json"
12+
},
13+
{
14+
"path":"./tsconfig.schematics.json"
1215
}
1316
]
1417
}
Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,49 @@
1-
import{Rule,SchematicContext,Tree}from'@angular-devkit/schematics';
1+
import{Rule,SchematicContext,SchematicsException,Tree}from'@angular-devkit/schematics';
22
import{NodePackageInstallTask}from'@angular-devkit/schematics/tasks';
3+
import{addPackageJsonDependency,NodeDependency,NodeDependencyType}from'@schematics/angular/utility/dependencies';
4+
import{getPackageVersionFromPackageJson,PackageJson}from'./package-config';
5+
import*aspkgJsonfrom'../../package.json';
36

47
exportfunctionngAdd():Rule{
58
return(tree:Tree,context:SchematicContext)=>{
6-
context.logger.info('Installing @coreui/icons-angular ...');
9+
constpkg=pkgJsonasunknownasPackageJson;
10+
11+
context.logger.info(``);
12+
context.logger.info(`Installing${pkg.name} dependencies...`);
13+
14+
constngCoreVersionTag=getPackageVersionFromPackageJson(tree,'@angular/core');
15+
context.logger.info(`@angular/core version${ngCoreVersionTag}`);
16+
if(!ngCoreVersionTag){
17+
thrownewSchematicsException('@angular/core version not found');
18+
}
19+
20+
constprojectDeps:NodeDependency[]=[
21+
{name:'@angular/common',type:NodeDependencyType.Default,version:ngCoreVersionTag,overwrite:false},
22+
{name:'@angular/core',type:NodeDependencyType.Default,version:ngCoreVersionTag,overwrite:false},
23+
{
24+
name:'@angular/platform-browser',
25+
type:NodeDependencyType.Default,
26+
version:ngCoreVersionTag,
27+
overwrite:false
28+
}
29+
];
30+
31+
projectDeps.forEach((dep)=>{
32+
addPackageJsonDependency(tree,dep);
33+
context.logger.info(`Added dependency:${dep.name}@${dep.version}`);
34+
});
35+
36+
constlibrary:NodeDependency={
37+
name:pkg.name,
38+
type:NodeDependencyType.Default,
39+
version:`~${pkg.version}`,
40+
overwrite:true
41+
};
42+
43+
addPackageJsonDependency(tree,library);
44+
context.logger.info(`Installing${library.name}@${library.version}`);
745
context.addTask(newNodePackageInstallTask());
46+
847
returntree;
948
};
1049
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/**
2+
*@license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
import{Tree}from'@angular-devkit/schematics';
10+
11+
exportinterfacePackageJson{
12+
dependencies:Record<string,string>;
13+
name:string;
14+
peerDependencies:Record<string,string>;
15+
version:string;
16+
}
17+
18+
/**
19+
* Sorts the keys of the given object.
20+
*@returns A new object instance with sorted keys
21+
*/
22+
functionsortObjectByKeys(obj:Record<string,string>){
23+
returnObject.keys(obj)
24+
.sort()
25+
.reduce(
26+
(result,key)=>{
27+
result[key]=obj[key];
28+
returnresult;
29+
},
30+
{}asRecord<string,string>
31+
);
32+
}
33+
34+
/** Adds a package to the package.json in the given host tree. */
35+
exportfunctionaddPackageToPackageJson(host:Tree,pkg:string,version:string):Tree{
36+
if(host.exists('package.json')){
37+
constsourceText=host.read('package.json')!.toString('utf-8');
38+
constjson=JSON.parse(sourceText)asPackageJson;
39+
40+
if(!json.dependencies){
41+
json.dependencies={};
42+
}
43+
44+
if(!json.dependencies[pkg]){
45+
json.dependencies[pkg]=version;
46+
json.dependencies=sortObjectByKeys(json.dependencies);
47+
}
48+
49+
host.overwrite('package.json',JSON.stringify(json,null,2));
50+
}
51+
52+
returnhost;
53+
}
54+
55+
/** Gets the version of the specified package by looking at the package.json in the given tree. */
56+
exportfunctiongetPackageVersionFromPackageJson(tree:Tree,name:string):string|null{
57+
if(!tree.exists('package.json')){
58+
returnnull;
59+
}
60+
61+
constpackageJson=JSON.parse(tree.read('package.json')!.toString('utf8'))asPackageJson;
62+
63+
if(packageJson.dependencies&&packageJson.dependencies[name]){
64+
returnpackageJson.dependencies[name];
65+
}
66+
67+
returnnull;
68+
}

‎projects/coreui-icons-angular/tsconfig.schematics.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"noUnusedLocals":true,
1717
"rootDir":"schematics",
1818
"outDir":"../../dist/coreui-icons-angular/schematics",
19+
"resolveJsonModule":true,
1920
"skipDefaultLibCheck":true,
2021
"skipLibCheck":true,
2122
"sourceMap":true,

‎tsconfig.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"declaration":false,
2828
"experimentalDecorators":true,
2929
"moduleResolution":"node",
30+
"resolveJsonModule":true,
3031
"importHelpers":true,
3132
"target":"ES2022",
3233
"module":"ES2022",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp