-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
react-native-monorepo-tools
Tools and utils to support a React Native monorepo built with Yarn Workspaces
-
lerna
:dragon: Lerna is a fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages from the same repository.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
After a few longer moments of familiarizing myself with nx, I found a post that nx prefers "single privacy policy" (one package.json file) which is opinionated. I personally don't like the single package.json policy (maybe for my PoC it would be ok, but I can't imagine it for large applications) and I'm not the only one https://github.com/nrwl/nx/issues/1777 . Ok, so nx and pnpm are out. That's why I stay with good old yarn (yarn v1 of course), giving it a chance with workspaces.
Ok, I run the application - it doesn't work. I need to configure Expo with workspaces.... There is a special documentation for this -> https://docs.expo.dev/guides/monorepos/ , copy / paste step by step. I restart the application and... obviously does not work. Somewhere in the depths of the internet I found this https://github.com/jsamr/yarnberry-expo-quickstarter/blob/master/packages/expo-client/metro.config.js , I copy the metro.config.js configuration and luckily it works! Wow.
Second app with bare RN. Similar story. It doesn't work. I googled and found this https://github.com/mmazzarolo/react-native-monorepo-tools . But still doesn't work... I found some random example https://github.com/aws-samples/aws-sdk-js-tests/blob/main/packages/react-native/metro.config.js and wow it works. I skip the confusion with tsconfig.json, setting path etc.
Second app with bare RN. Similar story. It doesn't work. I googled and found this https://github.com/mmazzarolo/react-native-monorepo-tools . But still doesn't work... I found some random example https://github.com/aws-samples/aws-sdk-js-tests/blob/main/packages/react-native/metro.config.js and wow it works. I skip the confusion with tsconfig.json, setting path etc.
Ok, time to implement Lerna. As usual, it just can't work because there is another problem. Lerna does not support (or not 100%) Yarn 2/3 https://github.com/lerna/lerna/issues/2449 Ok, so pnpm, nx and lerna have already dropped out.
But I'm not giving up, and I'm looking at the biggest frontend projects for best practices for monorepo. For example, I browse the Next.js repo https://github.com/vercel/next.js/. I see the file pnpm-workspace.yaml so pnpm.... also there is a lerna.json and.... turbo.json, I'm starting to lose my mind and I stop searching something to manage monorepo with a tool for that. I only have yarn workspaces.
Fine, but I need a package release tool and release-it tools looks good. I install, configure and on the last step - publishing - I find out that this lib does not support monorepo... https://github.com/release-it/release-it/issues/831 and the release-it-yarn-workspaces lib does not support the latest version of release-it https://github.com/rwjblue/release-it-yarn-workspaces/issues/68
Fine, but I need a package release tool and release-it tools looks good. I install, configure and on the last step - publishing - I find out that this lib does not support monorepo... https://github.com/release-it/release-it/issues/831 and the release-it-yarn-workspaces lib does not support the latest version of release-it https://github.com/rwjblue/release-it-yarn-workspaces/issues/68
Related posts
-
Building a Local Development Environment: Running a Next.js Full-Stack App with PostgreSQL and Minio S3 Using Docker
-
My first client, just got a question about which tech to use!
-
How to build and deploy a modern-day Next.js application
-
Building Portfolio: Install Next.js and Tailwind with pnpm
-
Why is setting up a new project with multiple technologies so difficult?