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

Commit 3604e24

Browse files
committed
fix: generate tsconfig based on the nativescript-dev-webpack dependency
1 parent 5fa8c73 commit 3604e24

File tree

3 files changed

+38
-15
lines changed

3 files changed

+38
-15
lines changed

projectFilesManager.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
const path = require("path");
22
const fs = require("fs");
33

4-
const { isAngular, isVue } = require("./projectHelpers");
4+
const { isTypeScript, isAngular, isVue } = require("./projectHelpers");
55

66
function addProjectFiles(projectDir) {
77
const projectTemplates = getProjectTemplates(projectDir);
8-
Object.keys(projectTemplates).forEach(function(templateName) {
8+
Object.keys(projectTemplates).forEach(function (templateName) {
99
const templateDestination = projectTemplates[templateName];
1010
templateName = path.resolve(templateName);
1111
copyTemplate(templateName, templateDestination);
@@ -14,7 +14,7 @@ function addProjectFiles(projectDir) {
1414

1515
function removeProjectFiles(projectDir) {
1616
const projectTemplates = getProjectTemplates(projectDir);
17-
Object.keys(projectTemplates).forEach(function(templateName) {
17+
Object.keys(projectTemplates).forEach(function (templateName) {
1818
const templateDestination = projectTemplates[templateName];
1919
deleteFile(templateDestination);
2020
});
@@ -65,8 +65,10 @@ function getProjectTemplates(projectDir) {
6565
templates = getAngularTemplates(WEBPACK_CONFIG_NAME, TSCONFIG_TNS_NAME);
6666
} else if (isVue({ projectDir })) {
6767
templates = getVueTemplates(WEBPACK_CONFIG_NAME);
68-
} else {
68+
} else if (isTypeScript({ projectDir })) {
6969
templates = getTypeScriptTemplates(WEBPACK_CONFIG_NAME, TSCONFIG_TNS_NAME);
70+
} else {
71+
templates = getJavaScriptTemplates(WEBPACK_CONFIG_NAME);
7072
}
7173

7274
return getFullTemplatesPath(projectDir, templates);
@@ -92,6 +94,12 @@ function getVueTemplates(webpackConfigName) {
9294
};
9395
}
9496

97+
function getJavaScriptTemplates(webpackConfigName) {
98+
return {
99+
"webpack.typescript.js": webpackConfigName,
100+
};
101+
}
102+
95103
function getFullTemplatesPath(projectDir, templates) {
96104
let updatedTemplates = {};
97105

projectHelpers.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@ const PROJECT_DATA_GETTERS = {
88
appResourcesPath: "getAppResourcesRelativeDirectoryPath",
99
};
1010

11+
const isTypeScript = ({ projectDir, packageJson } = {}) => {
12+
packageJson = packageJson || getPackageJson(projectDir);
13+
14+
return (
15+
packageJson.dependencies &&
16+
(packageJson.dependencies.hasOwnProperty("nativescript-dev-typescript") ||
17+
packageJson.dependencies.hasOwnProperty("typescript"))
18+
) || (
19+
packageJson.devDependencies &&
20+
(packageJson.devDependencies.hasOwnProperty("nativescript-dev-typescript") ||
21+
packageJson.devDependencies.hasOwnProperty("typescript"))
22+
) || isAngular({ packageJson });
23+
};
24+
1125
const isAngular = ({ projectDir, packageJson } = {}) => {
1226
packageJson = packageJson || getPackageJson(projectDir);
1327

@@ -80,6 +94,7 @@ module.exports = {
8094
isIos,
8195
isAngular,
8296
isVue,
97+
isTypeScript,
8398
writePackageJson,
8499
convertSlashesInPath
85100
};

templates/webpack.typescript.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ module.exports = env => {
102102
"__dirname": false,
103103
},
104104
devtool: sourceMap ? "inline-source-map" : "none",
105-
optimization: {
105+
optimization: {
106106
splitChunks: {
107107
cacheGroups: {
108108
vendor: {
@@ -111,7 +111,7 @@ module.exports = env => {
111111
test: (module, chunks) => {
112112
const moduleName = module.nameForCondition ? module.nameForCondition() : '';
113113
return /[\\/]node_modules[\\/]/.test(moduleName) ||
114-
appComponents.some(comp => comp === moduleName);
114+
appComponents.some(comp => comp === moduleName);
115115

116116
},
117117
enforce: true,
@@ -140,7 +140,7 @@ module.exports = env => {
140140
module: {
141141
rules: [
142142
{
143-
test: new RegExp(entryPath + "\.[jt]s"),
143+
test: new RegExp(entryPath + "\.(js|ts)"),
144144
use: [
145145
// Require all Android app components
146146
platform === "android" && {
@@ -158,7 +158,7 @@ module.exports = env => {
158158
},
159159

160160
{
161-
test: /-page\.[jt]s$/,
161+
test: /-page\.(js|ts)$/,
162162
use: "nativescript-dev-webpack/script-hot-loader"
163163
},
164164

@@ -172,7 +172,7 @@ module.exports = env => {
172172
use: "nativescript-dev-webpack/markup-hot-loader"
173173
},
174174

175-
{ test: /\.(html|xml)$/, use: "nativescript-dev-webpack/xml-namespace-loader"},
175+
{ test: /\.(html|xml)$/, use: "nativescript-dev-webpack/xml-namespace-loader" },
176176

177177
{
178178
test: /\.css$/,
@@ -203,14 +203,14 @@ module.exports = env => {
203203
"process": undefined,
204204
}),
205205
// Remove all files from the out dir.
206-
new CleanWebpackPlugin([ `${dist}/**/*` ]),
206+
new CleanWebpackPlugin([`${dist}/**/*`]),
207207
// Copy native app resources to out dir.
208208
new CopyWebpackPlugin([
209-
{
210-
from: `${appResourcesFullPath}/${appResourcesPlatformDir}`,
211-
to: `${dist}/App_Resources/${appResourcesPlatformDir}`,
212-
context: projectRoot
213-
},
209+
{
210+
from: `${appResourcesFullPath}/${appResourcesPlatformDir}`,
211+
to: `${dist}/App_Resources/${appResourcesPlatformDir}`,
212+
context: projectRoot
213+
},
214214
]),
215215
// Copy assets to out dir. Add your own globs as needed.
216216
new CopyWebpackPlugin([

0 commit comments

Comments
 (0)