Files
webawesome/README.md

114 lines
4.6 KiB
Markdown
Raw 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
Developers can use this documentation to learn how to build Web Awesome from source. You will need Node.js 14.17 or later 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
Components are built with [Lit](https://lit.dev/), 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 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 (i.e., `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 install a package specific to a Web Awesome package, change your working directory to that package's root (i.e., `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
```
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 browsers 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](LICENSE.md).