A template for vanilla web components.
- Use the template button in github. Or clone this then
rm -rf .git && git init. Thennpm i && npm init.
- Use the template system to re-name this module and start the docs:
node ./bin/cli.js --package-name=@nichoth/example --component-name=my-component --gh-namespace nichoth --repo-name my-repo-nameThe templates take several variables
--gh-namespace-- first path segment on github--package-name-- package name, including any namespace. eg,@alice/package--component-name-- the name of the web component, as used in HTML, egcool-example--repo-name-- repository name, the last segment in github URL, eg,github.com/user/repo-name-here
-
Edit the source code in
src/index.ts. -
Delete either
.github/workflows/gh-pages-docs.ymlor.github/workflows/gh-pages.yml, depending on whether you want to deploy an example or docs to github pages. -
Edit things
- edit the build-example command in
package.jsonso that it has the right path for github pages
- edit the build-example command in
- compile the source to both ESM and CJS format, and put compiled files in
dist. - ignore
distand*.jsin git, but don't ignore them in npm. That way we don't commit any compiled code to git, but it is available to consumers. - use npm's
prepublishOnlyhook to compile the code before publishing to npm. - use exports field in
package.jsonto make sure the right format is used by consumers. preversionnpm hook -- lintversionnpm hook -- generate a TOC for the README, and create and add a changelogpostversionnpm hook --git push --follow-tags && npm publish- eslint --
npm run lint - tests run in a browser environment via
tape-run-- seenpm test. Includestaptesting tools -- tapzero and tap-spec - CI via github actions
- stylelint -- see preversion npm hook
See Web Component lifecycle methods.
runs whenever an attribute on the Web Component is added, removed, or changes in value.
For performance reasons, the attributeChangedCallback() method only watches and reacts to attributes you tell it to. To do that, you create a
staticobservedAttributesproperty, with an array of attributes to watch as its value.
You can use any attributes you’d like, including non-standard ones.