Files
webawesome/README.md

115 lines
4.6 KiB
Markdown
Raw Permalink Normal View History

2023-09-08 13:45:49 -04:00
# Web Awesome
2020-07-15 17:30:37 -04:00
- Works with all frameworks 🧩
- Works with CDNs 🚛
- Fully customizable with CSS 🎨
2020-08-18 17:13:20 -04:00
- Includes an official dark theme 🌛
2020-07-29 08:11:54 -04:00
- Built with accessibility in mind ♿️
2020-07-15 17:30:37 -04:00
- Open source 😸
2023-09-05 12:01:19 -04:00
Built by the folks behind [Font Awesome](https://fontawesome.com/).
2020-07-15 17:30:37 -04:00
---
2024-06-18 13:49:17 -04:00
Documentation: [webawesome.com](https://webawesome.com)
2020-07-15 17:30:37 -04:00
2024-06-18 13:49:17 -04:00
Source: [github.com/shoelace-style/webawesome](https://github.com/shoelace-style/webawesome)
2020-07-15 17:30:37 -04:00
2024-06-18 13:49:17 -04:00
Twitter: [@webawesomer](https://twitter.com/webawesomer)
2020-07-15 17:30:37 -04:00
---
2023-09-08 14:32:23 -04:00
## Developers ✨
2020-07-15 17:30:37 -04:00
2023-09-08 14:32:23 -04:00
Developers can use this documentation to learn how to build Web Awesome from source. You will need Node >= 14.17 to build and run the project locally.
2020-07-15 17:30:37 -04:00
2023-09-08 13:45:49 -04:00
**You don't need to do any of this to use Web Awesome!** This page is for people who want to contribute to the project, tinker with the source, or create a custom build of Web Awesome.
2020-07-15 17:30:37 -04:00
2024-06-18 13:49:17 -04:00
If that's not what you're trying to do, the [documentation website](https://webawesome.com) is where you want to be.
2020-07-15 17:30:37 -04:00
2023-09-08 13:45:49 -04:00
### What are you using to build Web Awesome?
2020-07-15 17:30:37 -04:00
2021-03-06 12:01:39 -05:00
Components are built with [LitElement](https://lit-element.polymer-project.org/), a custom elements base class that provides an intuitive API and reactive data binding. The build is a custom script with bundling powered by [esbuild](https://esbuild.github.io/).
2020-07-15 17:30:37 -04:00
### Understanding the Web Awesome monorepo
Web Awesome uses [NPM workspaces](https://docs.npmjs.com/cli/v11/using-npm/workspaces) for its monorepo structure and is fairly minimal in what it provides.
By using a NPM workspaces and a monorepo structure, we can get consistent builds, shared configurations, and reduced duplication across repositories which reduces regressions and forces consistency across `webawesome`, `webawesome-pro`, and `webawesome-app`.
Generally, if you plan to only work with the free version of `webawesome` it is easiest to go to `packages/webawesome` and run all commands from there.
### Where do NPM dependencies go?
Any dependencies intended to be used across all packages (IE: `prettier`, `eslint`) that are _NOT_ used at runtime should be in the root `devDependencies` of `package.json`.
```bash
npm install -D -w prettier
```
Any dependencies that will be used at runtime by a package should be part of the specific package's `"dependencies"` such as `lit`. This is required because if that dependency is not in the `packages/*/package.json`, it will not be installed when used via NPM.
Individual packages are also free to install devDependencies as needed as long as they are specific to that package only.
To do install a package specific to a package, change your working directory to that package's root
IE: `cd packages/webawesome && npm install <package-name>`
2020-07-15 17:30:37 -04:00
### Forking the Repo
2024-06-18 13:49:17 -04:00
Start by [forking the repo](https://github.com/shoelace-style/webawesome/fork) on GitHub, then clone it locally and install dependencies.
2020-07-15 17:30:37 -04:00
2020-07-24 14:15:32 -04:00
```bash
2023-09-08 13:45:49 -04:00
git clone https://github.com/YOUR_GITHUB_USERNAME/webawesome
cd webawesome
2020-07-15 17:30:37 -04:00
npm install
```
### Developing
Once you've cloned the repo, run the following command from the respective directory within `packages/*`
2020-07-15 17:30:37 -04:00
2020-07-24 14:15:32 -04:00
```bash
cd packages/webawesome
2021-02-26 09:09:13 -05:00
npm start
2020-07-15 17:30:37 -04:00
```
2023-06-06 08:22:18 -04:00
This will spin up the dev server. After the initial build, a browser will open automatically. There is currently no hot module reloading (HMR), as browser's don't provide a way to reregister custom elements, but most changes to the source will reload the browser automatically.
2020-07-15 17:30:37 -04:00
### Building
To generate a production build, run the following command.
2020-07-24 14:15:32 -04:00
```bash
cd packages/webawesome
2020-07-15 17:30:37 -04:00
npm run build
```
You can also run `npm run build:serve` to start an [`http-server`](https://www.npmjs.com/package/http-server) instance on `http://localhost:4000` after the build completes, so you can preview the production build.
2021-04-07 17:03:24 -04:00
### Creating New Components
2023-09-08 13:45:49 -04:00
To scaffold a new component, run the following command, replacing `wa-tag-name` with the desired tag name.
2021-04-07 17:03:24 -04:00
```bash
cd packages/webawesome
2023-09-08 13:45:49 -04:00
npm run create wa-tag-name
2021-04-07 17:03:24 -04:00
```
This will generate a source file, a stylesheet, and a docs page for you. When you start the dev server, you'll find the new component in the "Components" section of the sidebar.
### Adding additional packages
Right now the only additional packages are in private repositories.
To add additional packages from other repositories, run: `git clone <url> packages/<package-name>` to clone your repo into `packages/`.
Make sure to run `npm install` at the root of the monorepo after adding your package!
2020-07-15 17:30:37 -04:00
### Contributing
2023-09-08 13:45:49 -04:00
Web Awesome is an open source project and contributions are encouraged! If you're interesting in contributing, please review the [contribution guidelines](CONTRIBUTING.md) first.
2020-07-15 17:30:37 -04:00
## License
Web Awesome is available under the terms of the MIT license.