GithubHelp home page GithubHelp logo

bragur / odopt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dopt/odopt

0.0 0.0 0.0 6.87 MB

Shell 1.33% JavaScript 19.03% Prolog 0.59% TypeScript 67.78% CSS 1.62% Makefile 1.37% HTML 5.28% Dockerfile 2.71% PEG.js 0.29%

odopt's Introduction

odopt: Open Dopt

Welcome to Odopt! A monorepo of Dopt's open source packages.

Disclaimer

The pull requests and commit history for this repository may look a bit odd. The reason is that we are syncing commits to open source packages in our primary/closed-source repository to this repository. While slightly complex to get setup, we love that this approach allows us to easily open source packages we think folks would benefit from while still enjoying the benefits of development in a monorepo. Additionally, we are going to generate quite a few SDKs for working with our APIs - all of which will be open source.

Structure

We use pnpm at Dopt. We switched from yarn to pnpm a year into developing because of how many times we'd been bit by phantom depdencies. We ❤️ the strictness and can't complain about the speed gains.

We utilize pnpm workspaces. The pnpm-workspace.yaml defines the root of our workspace and allows us to define/constrain where packages can live in the monorepo. For odopt it looks something like this

packages:
  - "packages/**/*"

Our package manager (pnpm) and our build tool (turbo) will scan those directories and look for children package.json files. Their dependencies are used to define our workspace's topology.

While our private repository is app-centric in structure e.g.

├── apps          (apps that live on dopt.com)
├── services      (services used by app(s))
└── packages      (packages shared by apps)

this repository will be more package-centric i.e.

└── packages      (packages open sourced from dopt)

Any children directories of the packages directory correspond to package scopes

└── packages
    └── @dopt

and their children correspond to packages themselves

└── packages
    ├── @dopt
    ├─────── react
    ├─────── esbuild-plugins
    ├─────── please
    └─────── ...

Pacakges

Contributing

General Prerequisites

  1. Install make
  2. Install fnm
  3. Install husky https://typicode.github.io/husky/#/
    • pnpm --filter @dopt/cli exec husky install
  4. Install pnpm

General Setup

git clone [email protected]:dopt/odopt.git;
cd odopt;

Development

Node version management

#first time
$ fnm use `cat .nvmrc`

#subsequently
$ fnm use

Install all the dependencies of the monorepo

# install all dependencies in monorepo
$ pnpm i;

# build monorepo
$ make build;

If for any reason you need to start fresh you can run the following

  make clean # remove any build artifacts (e.g. dist/ directories)
  make uninstall # remove all node_modules directories

odopt's People

Contributors

alexchantastic avatar carlossantillana avatar chasebish avatar joemckenney avatar kseth avatar mariaorias avatar pankaj-avhad avatar renovate-bot avatar renovate[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.