Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit 061b270

Browse files
committed
feat: stop using the proxy tns-core-modules package when the @nativescript/core is available
1 parent 0c51911 commit 061b270

6 files changed

+70
-22
lines changed

Diff for: index.js

+13
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,19 @@ const {
1010
Object.assign(exports, require("./plugins"));
1111
Object.assign(exports, require("./host/resolver"));
1212

13+
exports.hasRootLevelScopedModules = function ({ projectDir }) {
14+
let hasRootLevelScopedModules;
15+
try {
16+
const scopedModulesPackageName = '@nativescript/core';
17+
require.resolve(scopedModulesPackageName, { paths: [projectDir] });
18+
hasRootLevelScopedModules = true;
19+
} catch (e) {
20+
hasRootLevelScopedModules = false;
21+
}
22+
23+
return hasRootLevelScopedModules;
24+
}
25+
1326
exports.getAotEntryModule = function (appDirectory) {
1427
verifyEntryModuleDirectory(appDirectory);
1528

Diff for: templates/webpack.angular.js

+14-5
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,17 @@ module.exports = env => {
6060
const isAnySourceMapEnabled = !!sourceMap || !!hiddenSourceMap;
6161
const externals = nsWebpack.getConvertedExternals(env.externals);
6262
const appFullPath = resolve(projectRoot, appPath);
63+
const hasRootLevelScopedModules = nsWebpack.hasRootLevelScopedModules({ projectDir: projectRoot });
64+
let coreModulesPackageName = "tns-core-modules";
65+
const alias = {
66+
'~': appFullPath
67+
};
68+
69+
if (hasRootLevelScopedModules) {
70+
coreModulesPackageName = "@nativescript/core";
71+
alias["tns-core-modules"] = coreModulesPackageName;
72+
alias["nativescript-angular"] = "@nativescript/angular";
73+
}
6374
const appResourcesFullPath = resolve(projectRoot, appResourcesPath);
6475
const tsConfigName = "tsconfig.tns.json";
6576
const entryModule = `${nsWebpack.getEntryModule(appFullPath, platform)}.ts`;
@@ -141,14 +152,12 @@ module.exports = env => {
141152
extensions: [".ts", ".js", ".scss", ".css"],
142153
// Resolve {N} system modules from tns-core-modules
143154
modules: [
144-
resolve(__dirname, "node_modules/tns-core-modules"),
155+
resolve(__dirname, `node_modules/${coreModulesPackageName}`),
145156
resolve(__dirname, "node_modules"),
146-
"node_modules/tns-core-modules",
157+
`node_modules/${coreModulesPackageName}`,
147158
"node_modules",
148159
],
149-
alias: {
150-
'~': appFullPath
151-
},
160+
alias,
152161
symlinks: true
153162
},
154163
resolveLoader: {

Diff for: templates/webpack.config.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const nativeScriptDevWebpack = {
3030
PlatformFSPlugin: EmptyClass,
3131
getAppPath: () => 'app',
3232
getEntryModule: () => 'EntryModule',
33+
hasRootLevelScopedModules: () => false,
3334
getResolver: () => null,
3435
getConvertedExternals: nsWebpackIndex.getConvertedExternals,
3536
getSourceMapFilename: nsWebpackIndex.getSourceMapFilename,

Diff for: templates/webpack.javascript.js

+13-5
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ module.exports = env => {
5353
const isAnySourceMapEnabled = !!sourceMap || !!hiddenSourceMap;
5454
const externals = nsWebpack.getConvertedExternals(env.externals);
5555
const appFullPath = resolve(projectRoot, appPath);
56+
const hasRootLevelScopedModules = nsWebpack.hasRootLevelScopedModules({ projectDir: projectRoot });
57+
let coreModulesPackageName = "tns-core-modules";
58+
const alias = {
59+
'~': appFullPath
60+
};
61+
62+
if (hasRootLevelScopedModules) {
63+
coreModulesPackageName = "@nativescript/core";
64+
alias["tns-core-modules"] = coreModulesPackageName;
65+
}
5666
const appResourcesFullPath = resolve(projectRoot, appResourcesPath);
5767

5868
const entryModule = nsWebpack.getEntryModule(appFullPath, platform);
@@ -99,14 +109,12 @@ module.exports = env => {
99109
extensions: [".js", ".scss", ".css"],
100110
// Resolve {N} system modules from tns-core-modules
101111
modules: [
102-
resolve(__dirname, "node_modules/tns-core-modules"),
112+
resolve(__dirname, `node_modules/${coreModulesPackageName}`),
103113
resolve(__dirname, "node_modules"),
104-
"node_modules/tns-core-modules",
114+
`node_modules/${coreModulesPackageName}`,
105115
"node_modules",
106116
],
107-
alias: {
108-
'~': appFullPath
109-
},
117+
alias,
110118
// resolve symlinks to symlinked modules
111119
symlinks: true
112120
},

Diff for: templates/webpack.typescript.js

+13-5
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ module.exports = env => {
5656
const externals = nsWebpack.getConvertedExternals(env.externals);
5757

5858
const appFullPath = resolve(projectRoot, appPath);
59+
const hasRootLevelScopedModules = nsWebpack.hasRootLevelScopedModules({ projectDir: projectRoot });
60+
let coreModulesPackageName = "tns-core-modules";
61+
const alias = {
62+
'~': appFullPath
63+
};
64+
65+
if (hasRootLevelScopedModules) {
66+
coreModulesPackageName = "@nativescript/core";
67+
alias["tns-core-modules"] = coreModulesPackageName;
68+
}
5969
const appResourcesFullPath = resolve(projectRoot, appResourcesPath);
6070

6171
const entryModule = nsWebpack.getEntryModule(appFullPath, platform);
@@ -106,14 +116,12 @@ module.exports = env => {
106116
extensions: [".ts", ".js", ".scss", ".css"],
107117
// Resolve {N} system modules from tns-core-modules
108118
modules: [
109-
resolve(__dirname, "node_modules/tns-core-modules"),
119+
resolve(__dirname, `node_modules/${coreModulesPackageName}`),
110120
resolve(__dirname, "node_modules"),
111-
"node_modules/tns-core-modules",
121+
`node_modules/${coreModulesPackageName}`,
112122
"node_modules",
113123
],
114-
alias: {
115-
'~': appFullPath
116-
},
124+
alias,
117125
// resolve symlinks to symlinked modules
118126
symlinks: true
119127
},

Diff for: templates/webpack.vue.js

+16-7
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,19 @@ module.exports = env => {
5959
const mode = production ? "production" : "development"
6060

6161
const appFullPath = resolve(projectRoot, appPath);
62+
const hasRootLevelScopedModules = nsWebpack.hasRootLevelScopedModules({ projectDir: projectRoot });
63+
let coreModulesPackageName = "tns-core-modules";
64+
const alias = {
65+
'~': appFullPath,
66+
'@': appFullPath,
67+
'vue': 'nativescript-vue'
68+
};
69+
70+
if (hasRootLevelScopedModules) {
71+
coreModulesPackageName = "@nativescript/core";
72+
alias["tns-core-modules"] = coreModulesPackageName;
73+
}
74+
6275
const appResourcesFullPath = resolve(projectRoot, appResourcesPath);
6376

6477
const entryModule = nsWebpack.getEntryModule(appFullPath, platform);
@@ -106,16 +119,12 @@ module.exports = env => {
106119
extensions: [".vue", ".ts", ".js", ".scss", ".css"],
107120
// Resolve {N} system modules from tns-core-modules
108121
modules: [
109-
resolve(__dirname, "node_modules/tns-core-modules"),
122+
resolve(__dirname, `node_modules/${coreModulesPackageName}`),
110123
resolve(__dirname, "node_modules"),
111-
"node_modules/tns-core-modules",
124+
`node_modules/${coreModulesPackageName}`,
112125
"node_modules",
113126
],
114-
alias: {
115-
'~': appFullPath,
116-
'@': appFullPath,
117-
'vue': 'nativescript-vue'
118-
},
127+
alias,
119128
// resolve symlinks to symlinked modules
120129
symlinks: true,
121130
},

0 commit comments

Comments
 (0)