diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index d5be6552224..04a8fd69888 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -652,6 +652,7 @@ Stencil v3.0.0 is in development at this time and has not been released. The lis change. Further details on each of these items will be included prior to the release. - [fix(testing): puppeteer v10 support #2934](https://github.com/ionic-team/stencil/pull/2934) +- [feat(cli): update flag defaults for V3 #3502](https://github.com/ionic-team/stencil/pull/3502) ## DEPRECATIONS diff --git a/src/compiler/config/outputs/validate-custom-element.ts b/src/compiler/config/outputs/validate-custom-element.ts index 48fa5810786..9f3c4ad6035 100644 --- a/src/compiler/config/outputs/validate-custom-element.ts +++ b/src/compiler/config/outputs/validate-custom-element.ts @@ -37,6 +37,9 @@ export const validateCustomElement = ( if (!isBoolean(outputTarget.externalRuntime)) { outputTarget.externalRuntime = true; } + if (!isBoolean(outputTarget.generateTypeDeclarations)) { + outputTarget.generateTypeDeclarations = true; + } // unlike other output targets, Stencil does not allow users to define the output location of types at this time if (outputTarget.generateTypeDeclarations) { diff --git a/src/compiler/config/test/validate-config-sourcemap.spec.ts b/src/compiler/config/test/validate-config-sourcemap.spec.ts index 63da72b6695..1028f0d0e27 100644 --- a/src/compiler/config/test/validate-config-sourcemap.spec.ts +++ b/src/compiler/config/test/validate-config-sourcemap.spec.ts @@ -54,13 +54,13 @@ describe('stencil config - sourceMap option', () => { expect(inlineSources).toBe(false); }); - it('sets the sourceMap options to false in tsconfig by default', async () => { + it('sets the sourceMap options to true in tsconfig by default', async () => { const testConfig = getLoadConfigForTests(); const loadConfigResults = await loadConfig(testConfig); const { sourceMap, inlineSources } = loadConfigResults.config.tsCompilerOptions; - expect(sourceMap).toBe(false); - expect(inlineSources).toBe(false); + expect(sourceMap).toBe(true); + expect(inlineSources).toBe(true); }); }); diff --git a/src/compiler/config/test/validate-config.spec.ts b/src/compiler/config/test/validate-config.spec.ts index af900315835..597ef45af9b 100644 --- a/src/compiler/config/test/validate-config.spec.ts +++ b/src/compiler/config/test/validate-config.spec.ts @@ -430,9 +430,9 @@ describe('validation', () => { expect(config.sourceMap).toBe(false); }); - it('defaults the field to false when not set in the config', () => { + it('defaults the field to true when not set in the config', () => { const { config } = validateConfig(userConfig, bootstrapConfig); - expect(config.sourceMap).toBe(false); + expect(config.sourceMap).toBe(true); }); }); diff --git a/src/compiler/config/test/validate-output-dist-custom-element.spec.ts b/src/compiler/config/test/validate-output-dist-custom-element.spec.ts index 546206e5723..4ab2f0ec95b 100644 --- a/src/compiler/config/test/validate-output-dist-custom-element.spec.ts +++ b/src/compiler/config/test/validate-output-dist-custom-element.spec.ts @@ -24,12 +24,18 @@ describe('validate-output-dist-custom-element', () => { const { config } = validateConfig(userConfig, mockLoadConfigInit()); expect(config.outputTargets).toEqual([ + { + type: DIST_TYPES, + dir: defaultDistDir, + typesDir: path.join(rootDir, 'dist', 'types'), + }, { type: DIST_CUSTOM_ELEMENTS, copy: [], dir: defaultDistDir, empty: true, externalRuntime: true, + generateTypeDeclarations: true, }, ]); }); @@ -38,6 +44,7 @@ describe('validate-output-dist-custom-element', () => { const outputTarget: d.OutputTargetDistCustomElements = { type: DIST_CUSTOM_ELEMENTS, dir: distCustomElementsDir, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -49,6 +56,7 @@ describe('validate-output-dist-custom-element', () => { dir: path.join(rootDir, distCustomElementsDir), empty: true, externalRuntime: true, + generateTypeDeclarations: false, }, ]); }); @@ -58,6 +66,7 @@ describe('validate-output-dist-custom-element', () => { const outputTarget: d.OutputTargetDistCustomElements = { type: DIST_CUSTOM_ELEMENTS, externalRuntime: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -69,6 +78,7 @@ describe('validate-output-dist-custom-element', () => { dir: defaultDistDir, empty: true, externalRuntime: false, + generateTypeDeclarations: false, }, ]); }); @@ -78,6 +88,7 @@ describe('validate-output-dist-custom-element', () => { type: DIST_CUSTOM_ELEMENTS, empty: undefined, externalRuntime: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -89,6 +100,7 @@ describe('validate-output-dist-custom-element', () => { dir: defaultDistDir, empty: true, externalRuntime: false, + generateTypeDeclarations: false, }, ]); }); @@ -99,6 +111,7 @@ describe('validate-output-dist-custom-element', () => { const outputTarget: d.OutputTargetDistCustomElements = { type: DIST_CUSTOM_ELEMENTS, empty: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -110,6 +123,7 @@ describe('validate-output-dist-custom-element', () => { dir: defaultDistDir, empty: false, externalRuntime: true, + generateTypeDeclarations: false, }, ]); }); @@ -119,6 +133,7 @@ describe('validate-output-dist-custom-element', () => { type: DIST_CUSTOM_ELEMENTS, empty: false, externalRuntime: undefined, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -130,12 +145,64 @@ describe('validate-output-dist-custom-element', () => { dir: defaultDistDir, empty: false, externalRuntime: true, + generateTypeDeclarations: false, }, ]); }); }); describe('"generateTypeDeclarations" field', () => { + it('defaults the "generateTypeDeclarations" field to true if not provided', () => { + const outputTarget: d.OutputTargetDistCustomElements = { + type: DIST_CUSTOM_ELEMENTS, + empty: false, + }; + userConfig.outputTargets = [outputTarget]; + + const { config } = validateConfig(userConfig, mockLoadConfigInit()); + expect(config.outputTargets).toEqual([ + { + type: DIST_TYPES, + dir: defaultDistDir, + typesDir: path.join(rootDir, 'dist', 'types'), + }, + { + type: DIST_CUSTOM_ELEMENTS, + copy: [], + dir: defaultDistDir, + empty: false, + externalRuntime: true, + generateTypeDeclarations: true, + }, + ]); + }); + + it('defaults the "generateTypeDeclarations" field to true it\'s not a boolean', () => { + const outputTarget: d.OutputTargetDistCustomElements = { + type: DIST_CUSTOM_ELEMENTS, + empty: false, + generateTypeDeclarations: undefined, + }; + userConfig.outputTargets = [outputTarget]; + + const { config } = validateConfig(userConfig, mockLoadConfigInit()); + expect(config.outputTargets).toEqual([ + { + type: DIST_TYPES, + dir: defaultDistDir, + typesDir: path.join(rootDir, 'dist', 'types'), + }, + { + type: DIST_CUSTOM_ELEMENTS, + copy: [], + dir: defaultDistDir, + empty: false, + externalRuntime: true, + generateTypeDeclarations: true, + }, + ]); + }); + it('creates a types directory when "generateTypeDeclarations" is true', () => { const outputTarget: d.OutputTargetDistCustomElements = { type: DIST_CUSTOM_ELEMENTS, @@ -231,6 +298,7 @@ describe('validate-output-dist-custom-element', () => { dir: distCustomElementsDir, empty: false, externalRuntime: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -247,6 +315,7 @@ describe('validate-output-dist-custom-element', () => { dir: path.join(rootDir, distCustomElementsDir), empty: false, externalRuntime: false, + generateTypeDeclarations: false, }, ]); }); diff --git a/src/compiler/config/validate-config.ts b/src/compiler/config/validate-config.ts index 6eba8452ccb..17b012a8cae 100644 --- a/src/compiler/config/validate-config.ts +++ b/src/compiler/config/validate-config.ts @@ -90,7 +90,7 @@ export const validateConfig = ( validatedConfig, 'sourceMap', null, - typeof validatedConfig.sourceMap === 'undefined' ? false : validatedConfig.sourceMap + typeof validatedConfig.sourceMap === 'undefined' ? true : validatedConfig.sourceMap ); setBooleanConfig(validatedConfig, 'watch', 'watch', false); setBooleanConfig(validatedConfig, 'buildDocs', 'docs', !validatedConfig.devMode);