typescript - Alternativet 'emitDeclarationOnly' kan inte anges tillsammans med alternativet 'noEmit'
Jag arbetar med ett VueJS-projekt, och vi har precis implementerat Typescript (version 4.8.4).
Jag fick detta fel error TS5053: Option 'emitDeclarationOnly' kan inte anges tillsammans med option 'noEmit' efter att ha uppdaterat ett gränssnitt i en ts-typfil.
I min tsconfig-fil deklarerar vi bara "emitDeclarationOnly": true, men det verkar som att noEmit är deklarerat med andra paket under node_modules.
Här är hela innehållet i tsconfig-filen
{
"compilerOptions": {
"target": "es6",
"module": "es6",
"strict": true,
"jsx": "preserve",
"moduleResolution": "node",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"sourceMap": true,
"noImplicitAny": false,
"baseUrl": ".",
"allowJs": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"declaration": true,
"isolatedModules": true,
"emitDeclarationOnly": true,
"outDir": "tsdist",
"types": [
"webpack-env",
"jest"
],
"typeRoots": [
"./node_modules/@types",
],
"paths": {
"@/*": [
"src/*"
],
"AppCheckout/*": ["src/assets/scripts/AppComponent/Checkout/src/*"],
"AppCommon/*": ["src/assets/scripts/AppComponent/Common/src/*"],
"AppPublication/*": ["src/assets/scripts/AppComponent/Publication/src/*"],
"AppStore/*": ["src/assets/scripts/AppComponent/Store/src/*"]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
, "src/assets/scripts/globals/Container/Core/initContainer.js" ],
"exclude": [
"node_modules",
"./tasks"
],
"vueCompilerOptions": {
"target": 2.7
}
}
Svar #1
Jag hittade källan till detta problem. Förresten använder vi paketet lint-staged i projektet för att validera ändringarna innan commits. Och i konfigurationsfilen för detta paket kontrollerar vi TypeScript-filerna genom att tvinga noEmit-alternativet medan vi i tsconfig-konfigurationsfilen definierar emitDeclarationOnly
"src/**/*.ts": [
"tsc-files --noEmit"
],
Så det var nödvändigt att harmonisera de två konfigurationerna för att undvika den här typen av fel.
