feat(bazel): ng_package adds package.json props (#22499)
We now add the 'main', 'module', 'es2015', and 'typings' properties, pointing to where the packaging tool lays them out. Fixes #22416 PR Close #22499
This commit is contained in:
@ -34,3 +34,16 @@ jasmine_node_test(
|
||||
srcs = [":common_spec_lib"],
|
||||
data = ["//packages/common:npm_package"],
|
||||
)
|
||||
|
||||
ts_library(
|
||||
name = "example_spec_lib",
|
||||
testonly = True,
|
||||
srcs = ["example_package.spec.ts"],
|
||||
deps = ["//packages:types"],
|
||||
)
|
||||
|
||||
jasmine_node_test(
|
||||
name = "example_package",
|
||||
srcs = [":example_spec_lib"],
|
||||
data = ["//packages/bazel/test/ng_package/example:npm_package"],
|
||||
)
|
||||
|
25
packages/bazel/test/ng_package/example/BUILD.bazel
Normal file
25
packages/bazel/test/ng_package/example/BUILD.bazel
Normal file
@ -0,0 +1,25 @@
|
||||
package(default_visibility = ["//packages/bazel/test:__subpackages__"])
|
||||
|
||||
load("//packages/bazel:index.bzl", "ng_module", "ng_package")
|
||||
|
||||
ng_module(
|
||||
name = "example",
|
||||
srcs = glob(["*.ts"]),
|
||||
deps = ["//packages/bazel/test/ng_package/example/secondary"],
|
||||
)
|
||||
|
||||
ng_package(
|
||||
name = "npm_package",
|
||||
srcs = [
|
||||
"package.json",
|
||||
"some-file.txt",
|
||||
"//packages/bazel/test/ng_package/example/secondary:package.json",
|
||||
],
|
||||
entry_point = "packages/bazel/test/ng_package/example/index.js",
|
||||
secondary_entry_points = ["secondary"],
|
||||
deps = [
|
||||
":example",
|
||||
# FIXME(#22419)
|
||||
"//packages/bazel/test/ng_package/example/secondary",
|
||||
],
|
||||
)
|
1
packages/bazel/test/ng_package/example/index.ts
Normal file
1
packages/bazel/test/ng_package/example/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './mymodule';
|
5
packages/bazel/test/ng_package/example/mymodule.ts
Normal file
5
packages/bazel/test/ng_package/example/mymodule.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
|
||||
@NgModule({})
|
||||
export class MyModule {
|
||||
}
|
3
packages/bazel/test/ng_package/example/package.json
Normal file
3
packages/bazel/test/ng_package/example/package.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"name": "example"
|
||||
}
|
11
packages/bazel/test/ng_package/example/secondary/BUILD.bazel
Normal file
11
packages/bazel/test/ng_package/example/secondary/BUILD.bazel
Normal file
@ -0,0 +1,11 @@
|
||||
package(default_visibility = ["//packages/bazel/test:__subpackages__"])
|
||||
|
||||
load("//packages/bazel:index.bzl", "ng_module")
|
||||
|
||||
exports_files(["package.json"])
|
||||
|
||||
ng_module(
|
||||
name = "secondary",
|
||||
srcs = glob(["*.ts"]),
|
||||
deps = ["//packages/core"],
|
||||
)
|
@ -0,0 +1 @@
|
||||
export * from './secondarymodule';
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"name": "example/secondary"
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
|
||||
@NgModule({})
|
||||
export class SecondaryModule {
|
||||
}
|
1
packages/bazel/test/ng_package/example/some-file.txt
Normal file
1
packages/bazel/test/ng_package/example/some-file.txt
Normal file
@ -0,0 +1 @@
|
||||
This file is just copied into the package.
|
58
packages/bazel/test/ng_package/example_package.spec.ts
Normal file
58
packages/bazel/test/ng_package/example_package.spec.ts
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as shx from 'shelljs';
|
||||
|
||||
const UTF8 = {
|
||||
encoding: 'utf-8'
|
||||
};
|
||||
|
||||
shx.cd(path.join(
|
||||
process.env['TEST_SRCDIR'], 'angular', 'packages', 'bazel', 'test', 'ng_package', 'example',
|
||||
'npm_package'));
|
||||
|
||||
describe('ng_package', () => {
|
||||
it('should have right bundle files', () => {
|
||||
expect(shx.ls('-R', 'bundles').stdout.split('\n').filter(n => !!n).sort()).toEqual([
|
||||
'example-secondary.umd.js',
|
||||
'example-secondary.umd.js.map',
|
||||
'example-secondary.umd.min.js',
|
||||
'example-secondary.umd.min.js.map',
|
||||
'example.umd.js',
|
||||
'example.umd.js.map',
|
||||
'example.umd.min.js',
|
||||
'example.umd.min.js.map',
|
||||
]);
|
||||
});
|
||||
it('should have right fesm files', () => {
|
||||
const expected = [
|
||||
'example.js',
|
||||
'example.js.map',
|
||||
'secondary.js',
|
||||
'secondary.js.map',
|
||||
];
|
||||
expect(shx.ls('-R', 'esm5').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected);
|
||||
expect(shx.ls('-R', 'esm2015').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected);
|
||||
});
|
||||
it('should have main entry point package.json properties set', () => {
|
||||
const packageJson = JSON.parse(fs.readFileSync('package.json', UTF8));
|
||||
expect(packageJson['main']).toBe('./bundles/example.umd.js');
|
||||
expect(packageJson['module']).toBe('./esm5/example.js');
|
||||
expect(packageJson['es2015']).toBe('./esm2015/example.js');
|
||||
expect(packageJson['typings']).toBe('./example.d.ts');
|
||||
});
|
||||
it('should have secondary entry point package.json properties set', () => {
|
||||
const packageJson = JSON.parse(fs.readFileSync(path.join('secondary', 'package.json'), UTF8));
|
||||
expect(packageJson['main']).toBe('../bundles/example-secondary.umd.js');
|
||||
expect(packageJson['module']).toBe('../esm5/secondary.js');
|
||||
expect(packageJson['es2015']).toBe('../esm2015/secondary.js');
|
||||
expect(packageJson['typings']).toBe('./secondary.d.ts');
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user