
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
web-component-ui
Advanced tools
Web Component UI is a dead simple reusable web component compiler and documentation tool.
Tiny tooling, non-opinionated, zero configuration, Typescript and SASS support with no overhead.
Compiles into UMD, bundle and clean vanillaJS automatically.
Compiles Markdown into static HTML and JSON, with live examples.
$ npm install -g web-component-ui
project/
├── my-component.ts
├── my-component.scss
└── readme.md
From the project root run:
$ wui build
This will generate:
project/
├── dist
│ ├── my-component.html // Demo file
│ ├── my-component.js // es6
│ ├── my-component.js.map // sourcemap
│ ├── my-component.bundle.js // Rollup IIFE es2015 bundle
│ ├── my-component.bundle.js.map // Bundle sourcemap
│ ├── my-component.module.js // UMD module
│ ├── my-component.module.js.map // Module sourcemap
│ └── readme.md // Copied readme.md
├── my-component.ts
├── my-component.scss
└── readme.md
| Command | Option | Description |
|---|---|---|
wui build | Compiles all files in project folder. | |
wui build | -s, --styleguide | Generates a index.html with a navigation to all component demos |
| Command | Option | Description |
|---|---|---|
wui start | Compiles and watches for file changes | |
wui start | -o, --open | Opens styleguide in the default browser |
wui start | -e, --entry path_to.md | Opens styleguide for referenced styleguide file |
In a <style> tag, make an absolute path reference to sass file:
const template = `
<style>
@style('project/my-component.scss')
</style>
`
SASS compiles into autoprefixed CSS 2 browser versions behind based on caniuse
wui compiles all .md into HTML and JSON, not limited to components and follows the directory structure.
In markdown write:
<!--
```
<custom-element-demo>
<template>
<script src="my-component.bundle.js">
<next-code-block></next-code-block>
</template>
</custom-element-demo>
```
-->
```html
<my-component></my-component>
```
Paths should be relative from the files location in dist folder.
All code in
<template>...</template>will execute on demo page load.
If you have a project like this, make a single my-component-libary.ts file that imports the other components and the compiler compiles it into UMD, bundle and es2015:
project/
├── my-component-libary.ts
└── components
├── my-component
│ ├── my-component.ts
│ ├── my-component.scss
│ └── my-component.md
└── my-other-component
├── my-other-component.ts
└── my-other-component.md
In my-component-libary.ts:
@import './components/my-component/my-component.js';
@import './components/my-other-component/my-other-component.js';
When referencing to component files use ending .js so it works with native modules loading in supported browsers
Yes! The more people (and bots) the better.
Please create an issue, make a pull request, start a discussion or ping me on twitter - @emolrmoeller.
For development, you can use this demo project that uses all the features of the cli web-component-ui-demo
FAQs
A web component build tool and styleguide generator CLI tool.
We found that web-component-ui demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.