Welcome, and thanks for your interest in contributing! Please take a moment to review the following:
Plaiceholder uses Yarn Workspaces and Lerna to develop multiple packages together as a monorepo. These packages are split across three directories:
docs
packages/
- Publicly-consumable packages, published to npm
- Each package is scoped to the
@plaiceholder/
npm org.
examples/
- Non-published packages, primarily for demo-purposes but also for integration testing.
- Examples are deployed to Vercel.
- Each package is prefixed with
example-with-
All @types/
and shared devDependencies
should be installed to the root package.json
plaiceholder.co
is a separate closed-source product. However, if you have any suggestions, please feel free to raise an issue on this repo.
- Commits follow the "Conventional Commits" specification. This allows for changelogs to be generated automatically upon release.
- Code is formatted via Prettier
- JavaScript is written as TypeScript where possible.
- Fork the repo and clone to your machine.
- Create a new branch with your contribution.
- Install Yarn on your machine.
- In the repo, install dependencies and link packages via:
yarn
Scripts in the root package.json
can be run via:
yarn <script-name>
Individual package scripts can be run in the project root via:
yarn workspace <package-name> <script-name>
A trade-off with using a personal repo is that permissions are fairly locked-down. In the mean-time releases will be made manually by the project owner.
So, you want to build an alternative Plaiceholder implementation? Great!
Let's get started…
Please respect that Plaiceholder is just the end result – countless hours of work have gone into making this project, almost all of it in the "free time" of its maintainers.
When building your own implementation, you should meet the following requirements:
-
Branding
- ❌ Don't use the "Plaiceholder" name on its own, the logo, tagline or any of the marketing copy from either the plaiceholder.co domain or docs.
The "Plaiceholder" project is a trading name of "Big Attic OÜ", and therefore should not be confused with affiliation. - ✅ Do name your project with the
-plaiceholder
suffix orplaiceholder-
prefix.
e.g. your repo or package, could be calledrust-plaiceholder
, your function could be calledrustPlaiceholder
(but notplaiceholder
).
- ❌ Don't use the "Plaiceholder" name on its own, the logo, tagline or any of the marketing copy from either the plaiceholder.co domain or docs.
-
Credit
-
❌ Don't mislead others into thinking your implementation is original.
-
✅ Do
-
Link to the original source, documentation, or site, regularly and where relevant.
-
Add the following disclaimer to the top of your
README.md
<p align="center"> An externally-maintained implementation of <strong> <a href="https://github.com/joe-bell/plaiceholder"> Plaiceholder </a> </strong> </p> --- <!-- your readme content-->
-
Use the Apache-2.0 License.
-
Add a License disclaimer to the bottom of your
README.md
## License Apache-2.0 License © <!-- your project name --> ### Acknowledgements #### [Joe Bell](https://github.com/joe-bell) ([Plaiceholder](https://github.com/joe-bell/plaiceholder)) Copyright © 2020-2021, Joe Bell. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License").
-
-
If you have any questions above the above requirements, please feel free to reach out to the maintainers directly.
Once you've completed the above, raise a PR to add your implementation to the Community page.