Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit 2af9547

Browse files
authored
Merge pull request #1051 from NativeScript/fatme/compilation-errors
fix: handle correctly webpack compilation errorrs
2 parents 9a5795f + 363c4da commit 2af9547

File tree

8 files changed

+43
-15
lines changed

8 files changed

+43
-15
lines changed

‎plugins/WatchStateLoggerPlugin.ts‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,14 @@ export class WatchStateLoggerPlugin {
2929
console.log(messages.compilationComplete);
3030
}
3131

32-
let emittedFiles = Object
32+
const emittedFiles = Object
3333
.keys(compilation.assets)
3434
.filter(assetKey => compilation.assets[assetKey].emitted);
3535

3636
const chunkFiles = getChunkFiles(compilation);
37-
3837
process.send && process.send(messages.compilationComplete, error => null);
3938
// Send emitted files so they can be LiveSynced if need be
40-
process.send && process.send({ emittedFiles, chunkFiles }, error => null);
39+
process.send && process.send({ emittedFiles, chunkFiles,hash: compilation.hash }, error => null);
4140
});
4241
}
4342
}

‎templates/webpack.angular.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const { nsReplaceBootstrap } = require("nativescript-dev-webpack/transformers/ns
77
const { nsReplaceLazyLoader } = require("nativescript-dev-webpack/transformers/ns-replace-lazy-loader");
88
const { nsSupportHmrNg } = require("nativescript-dev-webpack/transformers/ns-support-hmr-ng");
99
const { getMainModulePath } = require("nativescript-dev-webpack/utils/ast-utils");
10+
const { getNoEmitOnErrorFromTSConfig } = require("nativescript-dev-webpack/utils/tsconfig-utils");
1011
const CleanWebpackPlugin = require("clean-webpack-plugin");
1112
const CopyWebpackPlugin = require("copy-webpack-plugin");
1213
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
@@ -109,6 +110,8 @@ module.exports = env => {
109110
itemsToClean.push(`${join(projectRoot, "platforms", "android", "app", "build", "configurations", "nativescript-android-snapshot")}`);
110111
}
111112

113+
const noEmitOnErrorFromTSConfig = getNoEmitOnErrorFromTSConfig(join(projectRoot, tsConfigName));
114+
112115
nsWebpack.processAppComponents(appComponents, platform);
113116
const config = {
114117
mode: production ? "production" : "development",
@@ -160,6 +163,7 @@ module.exports = env => {
160163
devtool: hiddenSourceMap ? "hidden-source-map" : (sourceMap ? "inline-source-map" : "none"),
161164
optimization: {
162165
runtimeChunk: "single",
166+
noEmitOnErrors: noEmitOnErrorFromTSConfig,
163167
splitChunks: {
164168
cacheGroups: {
165169
vendor: {

‎templates/webpack.config.spec.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const webpackConfigAngular = proxyquire('./webpack.angular', {
4848
'nativescript-dev-webpack/transformers/ns-replace-lazy-loader': { nsReplaceLazyLoader: () => { return FakeLazyTransformerFlag } },
4949
'nativescript-dev-webpack/transformers/ns-support-hmr-ng': { nsSupportHmrNg: () => { return FakeHmrTransformerFlag } },
5050
'nativescript-dev-webpack/utils/ast-utils': { getMainModulePath: () => { return "fakePath"; } },
51+
'nativescript-dev-webpack/utils/tsconfig-utils': { getNoEmitOnErrorFromTSConfig: () => { return false; } },
5152
'nativescript-dev-webpack/plugins/NativeScriptAngularCompilerPlugin': { getAngularCompilerPlugin: () => { return AngularCompilerStub; } },
5253
'@ngtools/webpack': {
5354
AngularCompilerPlugin: AngularCompilerStub
@@ -58,6 +59,7 @@ const webpackConfigAngular = proxyquire('./webpack.angular', {
5859
const webpackConfigTypeScript = proxyquire('./webpack.typescript', {
5960
'nativescript-dev-webpack': nativeScriptDevWebpack,
6061
'nativescript-dev-webpack/nativescript-target': emptyObject,
62+
'nativescript-dev-webpack/utils/tsconfig-utils': { getNoEmitOnErrorFromTSConfig: () => { return false; } },
6163
'terser-webpack-plugin': TerserJsStub
6264
});
6365

‎templates/webpack.javascript.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ module.exports = env => {
123123
devtool: hiddenSourceMap ? "hidden-source-map" : (sourceMap ? "inline-source-map" : "none"),
124124
optimization: {
125125
runtimeChunk: "single",
126+
noEmitOnErrors: true,
126127
splitChunks: {
127128
cacheGroups: {
128129
vendor: {

‎templates/webpack.typescript.js‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const { join, relative, resolve, sep } = require("path");
33
const webpack = require("webpack");
44
const nsWebpack = require("nativescript-dev-webpack");
55
const nativescriptTarget = require("nativescript-dev-webpack/nativescript-target");
6+
const { getNoEmitOnErrorFromTSConfig } = require("nativescript-dev-webpack/utils/tsconfig-utils");
67
const CleanWebpackPlugin = require("clean-webpack-plugin");
78
const CopyWebpackPlugin = require("copy-webpack-plugin");
89
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
@@ -73,6 +74,8 @@ module.exports = env => {
7374
itemsToClean.push(`${join(projectRoot, "platforms", "android", "app", "build", "configurations", "nativescript-android-snapshot")}`);
7475
}
7576

77+
const noEmitOnErrorFromTSConfig = getNoEmitOnErrorFromTSConfig(tsConfigPath);
78+
7679
nsWebpack.processAppComponents(appComponents, platform);
7780
const config = {
7881
mode: production ? "production" : "development",
@@ -126,6 +129,7 @@ module.exports = env => {
126129
devtool: hiddenSourceMap ? "hidden-source-map" : (sourceMap ? "inline-source-map" : "none"),
127130
optimization: {
128131
runtimeChunk: "single",
132+
noEmitOnErrors: noEmitOnErrorFromTSConfig,
129133
splitChunks: {
130134
cacheGroups: {
131135
vendor: {
@@ -255,6 +259,7 @@ module.exports = env => {
255259
tsconfig: tsConfigPath,
256260
async: false,
257261
useTypescriptIncrementalApi: true,
262+
checkSyntacticErrors: true,
258263
memoryLimit: 4096
259264
})
260265
],

‎templates/webpack.vue.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ module.exports = env => {
132132
devtool: hiddenSourceMap ? "hidden-source-map" : (sourceMap ? "inline-source-map" : "none"),
133133
optimization: {
134134
runtimeChunk: "single",
135+
noEmitOnErrors: true,
135136
splitChunks: {
136137
cacheGroups: {
137138
vendor: {

‎utils/ast-utils.ts‎

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { dirname, join, relative } from "path";
1818
import * as ts from "typescript";
1919
import { readFileSync, existsSync } from "fs";
2020
import { collectDeepNodes } from "@ngtools/webpack/src/transformers";
21+
import { getCompilerOptionsFromTSConfig } from "./tsconfig-utils";
2122

2223
export function getMainModulePath(entryFilePath: string, tsConfigName: string) {
2324
try {
@@ -43,23 +44,13 @@ export function getMainModulePath(entryFilePath: string, tsConfigName: string) {
4344
function tsResolve(moduleName: string, containingFilePath: string, tsConfigName: string) {
4445
let result = moduleName;
4546
try {
46-
const parseConfigFileHost: ts.ParseConfigFileHost = {
47-
getCurrentDirectory: ts.sys.getCurrentDirectory,
48-
useCaseSensitiveFileNames: false,
49-
readDirectory: ts.sys.readDirectory,
50-
fileExists: ts.sys.fileExists,
51-
readFile: ts.sys.readFile,
52-
onUnRecoverableConfigFileDiagnostic: undefined
53-
};
54-
55-
const tsConfig = ts.getParsedCommandLineOfConfigFile(tsConfigName, ts.getDefaultCompilerOptions(), parseConfigFileHost);
56-
57-
const compilerOptions: ts.CompilerOptions = tsConfig.options || ts.getDefaultCompilerOptions();
5847
const moduleResolutionHost: ts.ModuleResolutionHost = {
5948
fileExists: ts.sys.fileExists,
6049
readFile: ts.sys.readFile
6150
};
6251

52+
const compilerOptions = getCompilerOptionsFromTSConfig(tsConfigName);
53+
6354
const resolutionResult = ts.resolveModuleName(moduleName, containingFilePath, compilerOptions, moduleResolutionHost);
6455

6556
if (resolutionResult && resolutionResult.resolvedModule && resolutionResult.resolvedModule.resolvedFileName) {

‎utils/tsconfig-utils.ts‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import * as ts from "typescript";
2+
3+
export function getCompilerOptionsFromTSConfig(tsConfigPath: string): ts.CompilerOptions {
4+
const parseConfigFileHost: ts.ParseConfigFileHost = {
5+
getCurrentDirectory: ts.sys.getCurrentDirectory,
6+
useCaseSensitiveFileNames: false,
7+
readDirectory: ts.sys.readDirectory,
8+
fileExists: ts.sys.fileExists,
9+
readFile: ts.sys.readFile,
10+
onUnRecoverableConfigFileDiagnostic: undefined
11+
};
12+
13+
const tsConfig = ts.getParsedCommandLineOfConfigFile(tsConfigPath, ts.getDefaultCompilerOptions(), parseConfigFileHost);
14+
15+
const compilerOptions: ts.CompilerOptions = tsConfig.options || ts.getDefaultCompilerOptions();
16+
17+
return compilerOptions;
18+
}
19+
20+
export function getNoEmitOnErrorFromTSConfig(tsConfigPath: string): boolean {
21+
const compilerOptions = getCompilerOptionsFromTSConfig(tsConfigPath);
22+
const noEmitOnError = !!compilerOptions.noEmitOnError;
23+
24+
return noEmitOnError;
25+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /