Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/preconstruct/preconstruct
🎁 Dev and build your code painlessly in monorepos
https://github.com/preconstruct/preconstruct
Last synced: 27 days ago
JSON representation
🎁 Dev and build your code painlessly in monorepos
- Host: GitHub
- URL: https://github.com/preconstruct/preconstruct
- Owner: preconstruct
- License: mit
- Created: 2018-11-05T21:24:31.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2024-10-10T04:29:02.000Z (about 1 month ago)
- Last Synced: 2024-10-12T10:03:38.455Z (about 1 month ago)
- Language: TypeScript
- Homepage: https://preconstruct.tools
- Size: 5.57 MB
- Stars: 1,162
- Watchers: 8
- Forks: 61
- Open Issues: 56
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-list - preconstruct
- jimsghstars - preconstruct/preconstruct - 🎁 Dev and build your code painlessly in monorepos (TypeScript)
README
# Preconstruct 🎁
> Dev and build your code painlessly in monorepos
---
## Key Features
- In dev mode, your code behaves the same as it will in production, including locally linked in monorepos
- Add multiple entrypoints to your packages for publishing
- CLI helps walk you through set-up and making changes to your configs
- Works with different kinds of JS monorepos
- Also works for single package repos!
- Builds your code with rollup## Getting Started
Assuming you already have a source file at src/index.js (or src/index.ts) or you're using Yarn Workspaces and have packages with src/index.js (or src/index.ts), you can setup Preconstruct like this.
```bash
yarn add --dev @preconstruct/cli
yarn preconstruct init
```If you're in a monorepo, you should also run `yarn preconstruct dev` and add it to a postinstall script(`"postinstall": "preconstruct dev"`) that runs preconstruct dev so that you can import your code without having to rebuild your project every time in changes.
## Publishing packages
Before you publish packages to npm, run `preconstruct build`. Preconstruct will use your Babel config and build flat bundles so make sure to [configure Babel](https://preconstruct.tools/guides/configuring-babel) with the transforms you want.
> We strongly recomment making a single script in your package.json that runs both build and publish, to stop broken publishes, such as `"release": "preconstruct build && yarn publish:packages`. If you're in a single-package repo, you could also run `preconstruct build` in a `prepare` or `prepublishOnly` script.
## Further Guides
There are a number of tasks that become easier with preconstruct that lie slightly outside the main workflow. Check out the following guides for setting these up.
- [A more detailed account of getting set up](https://preconstruct.tools/tutorials)
- [Setting up a second entrypoint](https://preconstruct.tools/guides/adding-a-second-entrypoint)
- [CLI command documentation](https://preconstruct.tools/commands)
- [Other configuration](https://preconstruct.tools/configuration)# See the docs at [preconstruct.tools](https://preconstruct.tools)
# Thanks/Inspiration
- [microbundle](https://github.com/developit/microbundle) was a huge inspiration for this! ❤️
- [rollup](https://rollupjs.org) - rollup has done the really hard stuff that makes preconstruct possible!
- [bolt](https://github.com/boltpkg/bolt) - lots of utils and things in this project were inspired by things in bolt
- [Kye Hohenberger](https://github.com/tkh44) for thinking of the name preconstruct
- Too many awesome people to name at [Thinkmill](https://thinkmill.com.au) who have given so much great feedback to make Preconstruct better and Thinkmill for sponsoring the development of Preconstruct 💝
- all the people who wrote all the dependencies for this project!