Skip to content

Commit 326cebc

Browse files
committed
fix-next(preview): externalize Angular and Vue dependencies
If the application has dependencies that require Angular or Vue, such as the NativeScript UI Pro plugins, it won't be able to find them in the bundled files. That's why these plugins should also be external.
1 parent 711d8a2 commit 326cebc

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

lib/services/livesync/playground/preview-app-plugins-service.ts

+9-8
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,15 @@ export class PreviewAppPluginsService implements IPreviewAppPluginsService {
3434
const devicePlugins = this.getDevicePlugins(device);
3535
const result = _.keys(devicePlugins)
3636
.filter(plugin => plugin.indexOf("nativescript") !== -1)
37-
// exclude angular and vue related dependencies as they do not contain
38-
// any native code. In this way, we will read them from the bundle
39-
// and improve the app startup time by not reading a lot of
40-
// files from the file system instead. Also, the core theme links
41-
// are custom and should be handled by us build time.
42-
.filter(plugin => !_.includes(["nativescript-angular", "nativescript-vue", "nativescript-intl", "nativescript-theme-core"], plugin));
43-
44-
result.push(...["tns-core-modules", "tns-core-modules-widgets"]);
37+
// The core theme links are custom and should be handled by us build time.
38+
.filter(plugin => !_.includes(["nativescript-theme-core"], plugin));
39+
40+
result.push(
41+
"tns-core-modules",
42+
"tns-core-modules-widgets",
43+
"@angular"
44+
);
45+
4546
return result;
4647
}
4748

test/services/playground/preview-app-plugins-service.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -417,44 +417,44 @@ describe("previewAppPluginsService", () => {
417417
describe("getExternalPlugins", () => {
418418
const testCases = [
419419
{
420-
name: "should return default plugins(`tns-core-modules` and `tns-core-modules-widgets`) when no plugins are provided",
420+
name: "should return default plugins(`tns-core-modules`, `tns-core-modules-widgets` and `@angular`) when no plugins are provided",
421421
plugins: {},
422-
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets"]
422+
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets", "@angular"]
423423
},
424424
{
425-
name: "should exclude `nativescript-vue`",
425+
name: "should include `nativescript-vue`",
426426
plugins: { "nativescript-vue": "1.2.3" },
427-
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets"]
427+
expectedPlugins: ["nativescript-vue", "tns-core-modules", "tns-core-modules-widgets", "@angular"]
428428
},
429429
{
430-
name: "should exclude `nativescript-intl`",
430+
name: "should include `nativescript-intl`",
431431
plugins: { "nativescript-intl": "4.5.6" },
432-
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets"]
432+
expectedPlugins: ["nativescript-intl", "tns-core-modules", "tns-core-modules-widgets", "@angular"]
433433
},
434434
{
435-
name: "should exclude `nativescript-angular`",
435+
name: "should include `nativescript-angular`",
436436
plugins: { "nativescript-angular": "7.8.9" },
437-
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets"]
437+
expectedPlugins: ["nativescript-angular", "tns-core-modules", "tns-core-modules-widgets", "@angular"]
438438
},
439439
{
440440
name: "should exclude `nativescript-theme-core`",
441441
plugins: { "nativescript-theme-core": "1.3.5" },
442-
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets"]
442+
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets", "@angular"]
443443
},
444444
{
445445
name: "should return plugins that contain `nativescript` in their names",
446446
plugins: {
447447
"nativescript-facebook": "4.5.6"
448448
},
449-
expectedPlugins: ["nativescript-facebook", "tns-core-modules", "tns-core-modules-widgets"]
449+
expectedPlugins: ["nativescript-facebook", "tns-core-modules", "tns-core-modules-widgets", "@angular"]
450450
},
451451
{
452452
name: "should not return plugins that do not contain `nativescript` in their names",
453453
plugins: {
454454
lodash: "4.5.6",
455455
xmlhttprequest: "1.2.3"
456456
},
457-
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets"]
457+
expectedPlugins: ["tns-core-modules", "tns-core-modules-widgets", "@angular"]
458458
}
459459
];
460460

0 commit comments

Comments
 (0)