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

Commit87266b3

Browse files
committed
fix(@schematics/angular): skip zone.js dependency for zoneless applications
A newly generated application no longer adds the `zone.js` dependency tothe workspace if the `zoneless` option is enabled.(cherry picked from commit7ca250a)
1 parent5814393 commit87266b3

File tree

6 files changed

+68
-6
lines changed

6 files changed

+68
-6
lines changed

‎packages/schematics/angular/application/index.ts‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,14 @@ function addDependenciesToPackageJson(options: ApplicationOptions) {
149149
},
150150
].forEach((dependency)=>addPackageJsonDependency(host,dependency));
151151

152+
if(!options.zoneless){
153+
addPackageJsonDependency(host,{
154+
type:NodeDependencyType.Default,
155+
name:'zone.js',
156+
version:latestVersions['zone.js'],
157+
});
158+
}
159+
152160
if(!options.skipInstall){
153161
context.addTask(newNodePackageInstallTask());
154162
}

‎packages/schematics/angular/application/index_spec.ts‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,48 @@ describe('Application Schematic', () => {
268268
expect(pkg.devDependencies['typescript']).toEqual(latestVersions['typescript']);
269269
});
270270

271+
it('should include zone.js if "zoneless" option is false',async()=>{
272+
consttree=awaitschematicRunner.runSchematic(
273+
'application',
274+
{
275+
...defaultOptions,
276+
zoneless:false,
277+
},
278+
workspaceTree,
279+
);
280+
281+
constpkg=JSON.parse(tree.readContent('/package.json'));
282+
expect(pkg.dependencies['zone.js']).toEqual(latestVersions['zone.js']);
283+
});
284+
285+
it('should include zone.js if "zoneless" option is not present',async()=>{
286+
consttree=awaitschematicRunner.runSchematic(
287+
'application',
288+
{
289+
...defaultOptions,
290+
zoneless:undefined,
291+
},
292+
workspaceTree,
293+
);
294+
295+
constpkg=JSON.parse(tree.readContent('/package.json'));
296+
expect(pkg.dependencies['zone.js']).toEqual(latestVersions['zone.js']);
297+
});
298+
299+
it('should not include zone.js if "zoneless" option is true',async()=>{
300+
consttree=awaitschematicRunner.runSchematic(
301+
'application',
302+
{
303+
...defaultOptions,
304+
zoneless:true,
305+
},
306+
workspaceTree,
307+
);
308+
309+
constpkg=JSON.parse(tree.readContent('/package.json'));
310+
expect(pkg.dependencies['zone.js']).toBeUndefined();
311+
});
312+
271313
it(`should not override existing users dependencies`,async()=>{
272314
constoldPackageJson=workspaceTree.readContent('package.json');
273315
workspaceTree.overwrite(

‎packages/schematics/angular/library/index.ts‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ import {
2222
}from'@angular-devkit/schematics';
2323
import{NodePackageInstallTask}from'@angular-devkit/schematics/tasks';
2424
import{join}from'node:path/posix';
25-
import{NodeDependencyType,addPackageJsonDependency}from'../utility/dependencies';
25+
import{
26+
NodeDependencyType,
27+
addPackageJsonDependency,
28+
getPackageJsonDependency,
29+
}from'../utility/dependencies';
2630
import{JSONFile}from'../utility/json-file';
2731
import{latestVersions}from'../utility/latest-versions';
2832
import{relativePathToWorkspaceRoot}from'../utility/paths';
@@ -96,6 +100,7 @@ function addLibToWorkspaceFile(
96100
options:LibraryOptions,
97101
projectRoot:string,
98102
projectName:string,
103+
hasZoneDependency:boolean,
99104
):Rule{
100105
returnupdateWorkspace((workspace)=>{
101106
workspace.projects.add({
@@ -121,7 +126,7 @@ function addLibToWorkspaceFile(
121126
builder:Builders.BuildKarma,
122127
options:{
123128
tsConfig:`${projectRoot}/tsconfig.spec.json`,
124-
polyfills:['zone.js','zone.js/testing'],
129+
polyfills:hasZoneDependency ?['zone.js','zone.js/testing'] :undefined,
125130
},
126131
},
127132
},
@@ -172,9 +177,11 @@ export default function (options: LibraryOptions): Rule {
172177
move(libDir),
173178
]);
174179

180+
consthasZoneDependency=getPackageJsonDependency(host,'zone.js')!==null;
181+
175182
returnchain([
176183
mergeWith(templateSource),
177-
addLibToWorkspaceFile(options,libDir,packageName),
184+
addLibToWorkspaceFile(options,libDir,packageName,hasZoneDependency),
178185
options.skipPackageJson ?noop() :addDependenciesToPackageJson(),
179186
options.skipTsConfig ?noop() :updateTsConfig(packageName,'./'+distRoot),
180187
options.skipTsConfig

‎packages/schematics/angular/library/index_spec.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,13 @@ describe('Library Schematic', () => {
195195
expect(workspace.projects.foo.prefix).toEqual('pre');
196196
});
197197

198+
it(`should not add zone.js to test polyfills when no zone.js dependency`,async()=>{
199+
consttree=awaitschematicRunner.runSchematic('library',defaultOptions,workspaceTree);
200+
201+
constworkspace=getJsonFileContent(tree,'/angular.json');
202+
expect(workspace.projects.foo.architect.test.options.polyfills).toBeUndefined();
203+
});
204+
198205
it('should handle a pascalCasedName',async()=>{
199206
constoptions={ ...defaultOptions,name:'pascalCasedName'};
200207
consttree=awaitschematicRunner.runSchematic('library',options,workspaceTree);

‎packages/schematics/angular/workspace/files/package.json.template‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
"@angular/platform-browser": "<%= latestVersions.Angular %>",
1818
"@angular/router": "<%= latestVersions.Angular %>",
1919
"rxjs": "<%= latestVersions['rxjs'] %>",
20-
"tslib": "<%= latestVersions['tslib'] %>",
21-
"zone.js": "<%= latestVersions['zone.js'] %>"
20+
"tslib": "<%= latestVersions['tslib'] %>"
2221
},
2322
"devDependencies": {
2423
"@angular/cli": "<%= '^' + version %>",

‎packages/schematics/angular/workspace/index_spec.ts‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ describe('Workspace Schematic', () => {
5858
constpkg=JSON.parse(tree.readContent('/package.json'));
5959
expect(pkg.dependencies['@angular/core']).toEqual(latestVersions.Angular);
6060
expect(pkg.dependencies['rxjs']).toEqual(latestVersions['rxjs']);
61-
expect(pkg.dependencies['zone.js']).toEqual(latestVersions['zone.js']);
6261
expect(pkg.devDependencies['typescript']).toEqual(latestVersions['typescript']);
6362
});
6463

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp