Skip to content

Commit 21f728e

Browse files
filipesilvahansl
authored andcommitted
fix(@angular-devkit/build-ng-packagr): update builder
Followup to comments in angular/devkit#444
1 parent e5271e4 commit 21f728e

36 files changed

+80
-6922
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
"mini-css-extract-plugin": "~0.2.0",
119119
"minimatch": "^3.0.4",
120120
"minimist": "^1.2.0",
121-
"ng-packagr": "^2.1.0",
121+
"ng-packagr": "^2.2.0",
122122
"node-sass": "^4.7.2",
123123
"opn": "^5.1.0",
124124
"parse5": "^4.0.0",

packages/angular_devkit/build_ng_packagr/package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
"dependencies": {
1212
"@angular-devkit/architect": "0.0.0",
1313
"@angular-devkit/core": "0.0.0",
14-
"rxjs": "0.0.0",
15-
"resolve": "0.0.0",
16-
"ng-packagr": "0.0.0"
14+
"resolve": "^1.5.0",
15+
"rxjs": "^5.5.6"
16+
},
17+
"peerDependencies": {
18+
"ng-packagr": "^2.2.0"
1719
}
18-
}
20+
}

packages/angular_devkit/build_ng_packagr/src/build/index.ts

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,21 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import { BuildEvent, Builder, BuilderContext, Target } from '@angular-devkit/architect';
10-
import { getSystemPath } from '@angular-devkit/core';
9+
import {
10+
BuildEvent,
11+
Builder,
12+
BuilderConfiguration,
13+
BuilderContext,
14+
} from '@angular-devkit/architect';
15+
import { getSystemPath, normalize, resolve } from '@angular-devkit/core';
1116
import * as ngPackagr from 'ng-packagr';
12-
import { resolve as resolvePath } from 'path';
1317
import { Observable } from 'rxjs/Observable';
1418

15-
// XX: blatantly copy-pasted from 'require-project-module.ts'
16-
const resolve = require('resolve');
19+
// TODO move this function to architect or somewhere else where it can be imported from.
20+
// Blatantly copy-pasted from 'require-project-module.ts'.
1721
function requireProjectModule(root: string, moduleName: string) {
22+
const resolve = require('resolve');
23+
1824
return require(resolve.sync(moduleName, { basedir: root }));
1925
}
2026

@@ -27,22 +33,26 @@ export class NgPackagrBuilder implements Builder<NgPackagrBuilderOptions> {
2733

2834
constructor(public context: BuilderContext) { }
2935

30-
run(target: Target<NgPackagrBuilderOptions>): Observable<BuildEvent> {
31-
const root = getSystemPath(target.root);
32-
const options = target.options;
36+
run(builderConfig: BuilderConfiguration<NgPackagrBuilderOptions>): Observable<BuildEvent> {
37+
const root = this.context.workspace.root;
38+
const options = builderConfig.options;
3339

3440
if (!options.project) {
3541
throw new Error('A "project" must be specified to build a library\'s npm package.');
3642
}
3743

3844
return new Observable(obs => {
39-
const projectNgPackagr = requireProjectModule(root, 'ng-packagr') as typeof ngPackagr;
40-
const packageJsonPath = resolvePath(root, options.project);
45+
const projectNgPackagr = requireProjectModule(
46+
getSystemPath(root), 'ng-packagr') as typeof ngPackagr;
47+
const packageJsonPath = getSystemPath(resolve(root, normalize(options.project)));
4148

4249
projectNgPackagr.ngPackagr()
4350
.forProject(packageJsonPath)
4451
.build()
45-
.then(() => obs.complete())
52+
.then(() => {
53+
obs.next({ success: true });
54+
obs.complete();
55+
})
4656
.catch((e) => obs.error(e));
4757
});
4858
}

packages/angular_devkit/build_ng_packagr/src/build/index_spec.ts

Lines changed: 0 additions & 53 deletions
This file was deleted.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. 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 { Architect, TargetSpecifier } from '@angular-devkit/architect';
10+
import { experimental, join, normalize } from '@angular-devkit/core';
11+
import { NodeJsSyncHost } from '@angular-devkit/core/node';
12+
import { concatMap, tap } from 'rxjs/operators';
13+
14+
15+
describe('NgPackagr Builder', () => {
16+
it('works', (done) => {
17+
const workspaceFile = normalize('angular.json');
18+
const devkitRoot = normalize((global as any)._DevKitRoot); // tslint:disable-line:no-any
19+
const workspaceRoot = join(devkitRoot,
20+
'tests/@angular_devkit/build_ng_packagr/ng-packaged/');
21+
22+
// TODO: move TestProjectHost from build-webpack to architect, or somewhere else, where it
23+
// can be imported from.
24+
const host = new NodeJsSyncHost();
25+
const workspace = new experimental.workspace.Workspace(workspaceRoot, host);
26+
const targetSpec: TargetSpecifier = { project: 'lib', target: 'build' };
27+
28+
return workspace.loadWorkspaceFromHost(workspaceFile).pipe(
29+
concatMap(ws => new Architect(ws).loadArchitect()),
30+
concatMap(arch => arch.run(arch.getBuilderConfiguration(targetSpec))),
31+
tap((buildEvent) => expect(buildEvent.success).toBe(true)),
32+
).subscribe(undefined, done.fail, done);
33+
}, 30000);
34+
});

tests/@angular_devkit/build_ng_packagr/ng-packaged/.angular-cli.json

Lines changed: 0 additions & 60 deletions
This file was deleted.

tests/@angular_devkit/build_ng_packagr/ng-packaged/.editorconfig

Lines changed: 0 additions & 13 deletions
This file was deleted.

tests/@angular_devkit/build_ng_packagr/ng-packaged/README.md

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"$schema": "../../../../packages/angular_devkit/core/src/workspace/workspace-schema.json",
3+
"version": 1,
4+
"projects": {
5+
"lib": {
6+
"root": "projects/lib",
7+
"projectType": "library",
8+
"architect": {
9+
"build": {
10+
"builder": "../../../../packages/angular_devkit/build_ng_packagr:build",
11+
"options": {
12+
"project": "projects/lib/package.json"
13+
}
14+
}
15+
}
16+
}
17+
}
18+
}

tests/@angular_devkit/build_ng_packagr/ng-packaged/e2e/app.e2e-spec.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

tests/@angular_devkit/build_ng_packagr/ng-packaged/e2e/app.po.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

tests/@angular_devkit/build_ng_packagr/ng-packaged/e2e/tsconfig.e2e.json

Lines changed: 0 additions & 14 deletions
This file was deleted.

tests/@angular_devkit/build_ng_packagr/ng-packaged/karma.conf.js

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)