Skip to content
This repository has been archived by the owner on Aug 9, 2022. It is now read-only.
/ dom-globals Public archive

DOM globals for TypeScript projects

License

Notifications You must be signed in to change notification settings

tinymce/dom-globals

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Description

dom-globals publishes the TypeScript DOM library as a module.

Development

npm i
make

Usage

  • npm i @ephox/dom-globals
  • remove dom from the lib array in tsconfig.json
  • An easy way to deal with your new compile errors is vscode "quick fix"

How and why

This is done in order to remove DOM globals from the namespace of a project, and import them only as necessary.

There are many advantages of this approach:

  • Internal modules with the same name as DOM globals are much easier to work with
  • It is immediately obvious if a module touches the DOM, and is thus subject to a risk of performance issues and side effects
  • Only the necessary parts of the DOM are imported where required, so a typo doesn't lead to referencing some random DOM feature instead of a compile error

Build process discussion

In order to make this work, the build copies the TypeScript lib.dom.d.ts file into the project, and makes two minor (automated) edits:

  • removes the no-default-lib reference
  • reads the namespace and generates an export block to make it a module.

This avoids forking the DOM library as a checked-in dependency, instead the fork is generated on demand when published. The file legal.txt file is updated with the version of TypeScript during the publish process

About

DOM globals for TypeScript projects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published