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 6c1a59a67a6..a903cba491a 100644 --- a/src/compiler/config/outputs/validate-custom-element.ts +++ b/src/compiler/config/outputs/validate-custom-element.ts @@ -36,6 +36,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 af99e263333..7337cc7aea0 100644 --- a/src/compiler/config/test/validate-config-sourcemap.spec.ts +++ b/src/compiler/config/test/validate-config-sourcemap.spec.ts @@ -53,13 +53,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 f3f11bb89e6..a189aa30293 100644 --- a/src/compiler/config/test/validate-config.spec.ts +++ b/src/compiler/config/test/validate-config.spec.ts @@ -429,9 +429,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 6926cf00459..e203ca56f93 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 @@ -23,12 +23,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, }, ]); }); @@ -37,6 +43,7 @@ describe('validate-output-dist-custom-element', () => { const outputTarget: d.OutputTargetDistCustomElements = { type: DIST_CUSTOM_ELEMENTS, dir: distCustomElementsDir, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -48,6 +55,7 @@ describe('validate-output-dist-custom-element', () => { dir: path.join(rootDir, distCustomElementsDir), empty: true, externalRuntime: true, + generateTypeDeclarations: false, }, ]); }); @@ -57,6 +65,7 @@ describe('validate-output-dist-custom-element', () => { const outputTarget: d.OutputTargetDistCustomElements = { type: DIST_CUSTOM_ELEMENTS, externalRuntime: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -68,6 +77,7 @@ describe('validate-output-dist-custom-element', () => { dir: defaultDistDir, empty: true, externalRuntime: false, + generateTypeDeclarations: false, }, ]); }); @@ -77,6 +87,7 @@ describe('validate-output-dist-custom-element', () => { type: DIST_CUSTOM_ELEMENTS, empty: undefined, externalRuntime: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -88,6 +99,7 @@ describe('validate-output-dist-custom-element', () => { dir: defaultDistDir, empty: true, externalRuntime: false, + generateTypeDeclarations: false, }, ]); }); @@ -98,6 +110,7 @@ describe('validate-output-dist-custom-element', () => { const outputTarget: d.OutputTargetDistCustomElements = { type: DIST_CUSTOM_ELEMENTS, empty: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -109,6 +122,7 @@ describe('validate-output-dist-custom-element', () => { dir: defaultDistDir, empty: false, externalRuntime: true, + generateTypeDeclarations: false, }, ]); }); @@ -118,6 +132,7 @@ describe('validate-output-dist-custom-element', () => { type: DIST_CUSTOM_ELEMENTS, empty: false, externalRuntime: undefined, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -129,12 +144,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, @@ -230,6 +297,7 @@ describe('validate-output-dist-custom-element', () => { dir: distCustomElementsDir, empty: false, externalRuntime: false, + generateTypeDeclarations: false, }; userConfig.outputTargets = [outputTarget]; @@ -246,6 +314,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 07931232e95..b128b3735a4 100644 --- a/src/compiler/config/validate-config.ts +++ b/src/compiler/config/validate-config.ts @@ -87,7 +87,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);