Skip to content

Commit 338167c

Browse files
committed
feat(nf): Add dev mode with dev-server
1 parent 1c14b3c commit 338167c

36 files changed

+8016
-8385
lines changed

.verdaccio/config.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# path to a directory with all packages
2+
storage: ../tmp/local-registry/storage
3+
4+
# a list of other known repositories we can talk to
5+
uplinks:
6+
npmjs:
7+
url: https://registry.npmjs.org/
8+
maxage: 60m
9+
10+
packages:
11+
'**':
12+
# give all users (including non-authenticated users) full access
13+
# because it is a local registry
14+
access: $all
15+
publish: $all
16+
unpublish: $all
17+
18+
# if package is not available locally, proxy requests to npm registry
19+
proxy: npmjs
20+
21+
# log settings
22+
logs:
23+
type: stdout
24+
format: pretty
25+
level: warn
26+
27+
publish:
28+
allow_offline: true # set offline to true to allow publish offline

jest.config.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
1-
const { getJestProjects } = require('@nrwl/jest');
1+
import { getJestProjects } from '@nx/jest';
22

33
export default {
4-
projects: [
5-
...getJestProjects(),
6-
'<rootDir>/libs/mf',
7-
'<rootDir>/libs/mf-runtime',
8-
'<rootDir>/libs/mf-tools',
9-
'<rootDir>/apps/playground',
10-
],
4+
projects: getJestProjects(),
115
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { MappedPath } from '../utils/mapped-paths';
2+
export type BuildKind = 'shared-package' | 'shared-mapping' | 'exposed';
3+
export interface BuildAdapterOptions {
4+
entryPoint: string;
5+
tsConfigPath?: string;
6+
external: Array<string>;
7+
outfile: string;
8+
mappedPaths: MappedPath[];
9+
packageName?: string;
10+
esm?: boolean;
11+
dev?: boolean;
12+
watch?: boolean;
13+
kind: BuildKind;
14+
}
15+
export type BuildAdapter = (options: BuildAdapterOptions) => Promise<void>;
16+
export declare function setBuildAdapter(buildAdapter: BuildAdapter): void;
17+
export declare function getBuildAdapter(): BuildAdapter;

libs/native-federation-core/src/lib/core/build-adapter.js

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libs/native-federation-core/src/lib/core/build-adapter.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libs/native-federation-core/src/lib/core/build-adapter.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ let _buildAdapter: BuildAdapter = async () => {
66
logger.error('Please set a BuildAdapter!');
77
};
88

9+
export type BuildKind = 'shared-package' | 'shared-mapping' | 'exposed';
10+
911
export interface BuildAdapterOptions {
1012
entryPoint: string;
1113
tsConfigPath?: string;
@@ -16,7 +18,7 @@ export interface BuildAdapterOptions {
1618
esm?: boolean;
1719
dev?: boolean;
1820
watch?: boolean;
19-
kind: 'shared-package' | 'shared-mapping' | 'exposed';
21+
kind: BuildKind;
2022
}
2123

2224
export type BuildAdapter = (options: BuildAdapterOptions) => Promise<void>;

libs/native-federation-core/src/lib/core/build-for-federation.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,6 @@ export async function buildForFederation(
4646

4747
writeFederationInfo(federationInfo, fedOptions);
4848
writeImportMap(sharedInfo, fedOptions);
49+
50+
return federationInfo;
4951
}

libs/native-federation-core/src/lib/core/bundle-shared.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,29 +28,13 @@ export async function bundleShared(
2828
))
2929
.filter((pi) => !!pi) as PackageInfo[];
3030

31-
// logger.notice('Shared packages are only bundled once as they are cached');
32-
// logger.notice(
33-
// 'Make sure, you skip all unneeded packages in your federation.config.js!'
34-
// );
35-
36-
// const federationConfigPath = path.join(
37-
// fedOptions.workspaceRoot,
38-
// fedOptions.federationConfig
39-
// );
40-
41-
//const hash = hashFile(federationConfigPath);
42-
4331
let first = true;
4432
for (const pi of packageInfos) {
45-
// logger.info('Bundling shared package ' + pi.packageName);
4633

4734
const encName = pi.packageName.replace(/[^A-Za-z0-9]/g, '_');
4835
const encVersion = pi.version.replace(/[^A-Za-z0-9]/g, '_');
4936

50-
const env = fedOptions.dev ? 'dev' : 'prod';
51-
52-
// const outFileName = `${encName}-${encVersion}-${hash}.js`;
53-
const outFileName = `${encName}-${encVersion}-${env}.js`;
37+
const outFileName = fedOptions.dev ? `${encName}-${encVersion}-dev.js` : `${encName}-${encVersion}.js`;
5438

5539
const cachePath = path.join(
5640
fedOptions.workspaceRoot,
@@ -82,7 +66,7 @@ export async function bundleShared(
8266
mappedPaths: config.sharedMappings,
8367
packageName: pi.packageName,
8468
esm: pi.esm,
85-
dev: !!fedOptions.dev,
69+
dev: fedOptions.dev,
8670
kind: 'shared-package',
8771
});
8872
} catch (e) {

libs/native-federation-core/src/lib/core/default-skip-list.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export const DEFAULT_SKIP_LIST: SkipList = [
1111
'@angular-architects/native-federation-runtime',
1212
'es-module-shims',
1313
'zone.js',
14-
// 'tslib',
14+
'tslib/',
1515
/\/schematics(\/|$)/,
1616
(pkg) => pkg.startsWith('@angular/') && !!pkg.match(/\/testing(\/|$)/),
1717
(pkg) => pkg.startsWith('@types/'),

libs/native-federation-core/src/lib/core/federation-builder.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { FederationInfo } from '@softarc/native-federation-runtime';
12
import { getConfigContext, usePackageJson, useWorkspace } from '../config/configuration-context';
23
import { NormalizedFederationConfig } from '../config/federation-config';
34
import { BuildAdapter, setBuildAdapter } from './build-adapter';
@@ -14,6 +15,7 @@ export interface BuildHelperParams {
1415
let externals: string[] = [];
1516
let config: NormalizedFederationConfig;
1617
let fedOptions: FederationOptions;
18+
let fedInfo: FederationInfo;
1719

1820
async function init(params: BuildHelperParams): Promise<void> {
1921
setBuildAdapter(params.adapter);
@@ -26,12 +28,15 @@ async function init(params: BuildHelperParams): Promise<void> {
2628
}
2729

2830
async function build(buildParams = defaultBuildParams): Promise<void> {
29-
await buildForFederation(config, fedOptions, externals, buildParams);
31+
fedInfo = await buildForFederation(config, fedOptions, externals, buildParams);
3032
}
3133

3234
export const federationBuilder = {
3335
init,
3436
build,
37+
get federationInfo() {
38+
return fedInfo;
39+
},
3540
get externals(): string[] {
3641
return externals;
3742
},

0 commit comments

Comments
 (0)