Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build: Add TypeScript version validation #21208

Merged
merged 2 commits into from
Mar 27, 2020

Conversation

sirreal
Copy link
Member

@sirreal sirreal commented Mar 27, 2020

Description

Provide clear errors due to mismated TypeScript versions. This should help make the transition period from #18942 smoother.

Add validate-typescript-version bin that will be used by lint-staged typechecker and in build:package-types script.

This helps to prevent cryptic errors when an older TypeScript module is present in node_modules and requires updating.

Without this change, lint-staged and npm run build:package-types would print this error:

# npm run build:pacakge-types
> tsc --build

error TS5053: Option 'allowJs' cannot be specified with option 'declaration'.
error TS5053: Option 'declaration' cannot be specified with option 'isolatedModules'.

This is due to an incompatible TypeScript package. With this change, these script will print this error:

$ npm run build:package-types
> node ./bin/packages/validate-typescript-version.js && tsc --build

TypeScript dependency out of date.
        Detected: '3.5.3'
        Required: '3.8.3'
Please ensure dependencies are up to date.

How has this been tested?

git checkout HEAD~3 # `master` branch before TypeScript update
npm ci # install stale TypeScript package
git checkout - # return to branch HEAD
npm run build:package-types # Fails and prints error
npm ci # Get up to date version
npm run build:package-types # Works!

Screenshots

Screen Shot 2020-03-27 at 17 46 15

Types of changes

Developer experience improvement. No changelog entry necessary.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@sirreal sirreal self-assigned this Mar 27, 2020
@sirreal sirreal requested review from gziolo and aduth March 27, 2020 16:48
@github-actions
Copy link

github-actions bot commented Mar 27, 2020

Size Change: +445 B (0%)

Total Size: 856 kB

Filename Size Change
build/annotations/index.js 3.45 kB +1 B
build/block-editor/index.js 102 kB +341 B (0%)
build/block-editor/style-rtl.css 11 kB +21 B (0%)
build/block-editor/style.css 11 kB +20 B (0%)
build/block-library/index.js 110 kB +17 B (0%)
build/block-library/style-rtl.css 7.49 kB +15 B (0%)
build/block-library/style.css 7.5 kB +16 B (0%)
build/blocks/index.js 57.5 kB -1 B
build/deprecated/index.js 772 B +1 B
build/edit-post/index.js 91.2 kB -2 B (0%)
build/edit-site/index.js 6.73 kB +1 B
build/edit-widgets/index.js 4.43 kB -1 B
build/editor/editor-styles-rtl.css 423 B -5 B (1%)
build/editor/editor-styles.css 426 B -5 B (1%)
build/editor/index.js 42.8 kB +12 B (0%)
build/keycodes/index.js 1.7 kB +13 B (0%)
build/plugins/index.js 2.54 kB +1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 998 B 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.58 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.02 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-library/editor-rtl.css 7.22 kB 0 B
build/block-library/editor.css 7.23 kB 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-default-parser/index.js 1.65 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/index.js 190 kB 0 B
build/components/style-rtl.css 15.8 kB 0 B
build/components/style.css 15.7 kB 0 B
build/compose/index.js 6.21 kB 0 B
build/core-data/index.js 10.6 kB 0 B
build/data-controls/index.js 1.04 kB 0 B
build/data/index.js 8.25 kB 0 B
build/date/index.js 5.37 kB 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.06 kB 0 B
build/edit-post/style-rtl.css 8.43 kB 0 B
build/edit-post/style.css 8.43 kB 0 B
build/edit-site/style-rtl.css 2.91 kB 0 B
build/edit-site/style.css 2.9 kB 0 B
build/edit-widgets/style-rtl.css 2.57 kB 0 B
build/edit-widgets/style.css 2.57 kB 0 B
build/editor/style-rtl.css 3.38 kB 0 B
build/editor/style.css 3.38 kB 0 B
build/element/index.js 4.44 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 6.95 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 1.93 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.49 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.3 kB 0 B
build/list-reusable-blocks/index.js 2.99 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 4.84 kB 0 B
build/notices/index.js 1.57 kB 0 B
build/nux/index.js 3.01 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 781 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/rich-text/index.js 14.5 kB 0 B
build/server-side-render/index.js 2.55 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.01 kB 0 B
build/viewport/index.js 1.61 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

Copy link
Member

@aduth aduth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kinda makes me wonder if this sort of thing could be generalized for all dependencies. It's quite similar in purpose to the wp-scripts check-engines script as well.

bin/packages/validate-typescript-version.js Outdated Show resolved Hide resolved
bin/packages/validate-typescript-version.js Show resolved Hide resolved
@sirreal sirreal merged commit 0d1e944 into master Mar 27, 2020
@sirreal sirreal deleted the add/bin-typescript-validate-version branch March 27, 2020 18:29
@github-actions github-actions bot added this to the Gutenberg 7.9 milestone Mar 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants