{"id":17749539,"url":"https://github.com/oresoftware/rolo-cholo-yolo","last_synced_at":"2026-04-10T20:54:28.814Z","repository":{"id":95713106,"uuid":"140785015","full_name":"ORESoftware/rolo-cholo-yolo","owner":"ORESoftware","description":"Example project demoing how NLU (NPM-Link-Up) works.","archived":false,"fork":false,"pushed_at":"2018-08-31T05:12:41.000Z","size":50,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-18T16:54:46.171Z","etag":null,"topics":["nlu","nodejs","npm","npm-link-up"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ORESoftware.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-13T02:09:20.000Z","updated_at":"2022-02-07T16:53:07.000Z","dependencies_parsed_at":"2023-05-21T17:45:35.218Z","dependency_job_id":null,"html_url":"https://github.com/ORESoftware/rolo-cholo-yolo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ORESoftware/rolo-cholo-yolo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Frolo-cholo-yolo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Frolo-cholo-yolo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Frolo-cholo-yolo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Frolo-cholo-yolo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ORESoftware","download_url":"https://codeload.github.com/ORESoftware/rolo-cholo-yolo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Frolo-cholo-yolo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31658964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"ssl_error","status_checked_at":"2026-04-10T17:19:13.364Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nlu","nodejs","npm","npm-link-up"],"created_at":"2024-10-26T11:23:42.163Z","updated_at":"2026-04-10T20:54:28.787Z","avatar_url":"https://github.com/ORESoftware.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## NLU Demo Project\n\n#### This repo accompanies the following video:\ngoo.gl/a9u1rr\n\n\u003cbr\u003e\n\nUse this demo project to better understand how npm-link-up works.\n\n## Intro\n\nnpm-link-up allows you to declaratively link projects together for local development. \u003cbr\u003e\nnpm-link-up is part of multi-pronged attack to make multi-repos easier to manage with NPM.\n\n\u003cb\u003e The current pieces are: \u003c/b\u003e\n\n* [npm-link-up (NLU)](https://github.com/ORESoftware/npm-link-up) =\u003e links multiple NPM packages together for local development\n* [r2g](https://github.com/ORESoftware/r2g) =\u003e tests local packages \u003ci\u003eproperly\u003c/i\u003e before publishing to NPM\n* [npp](https://github.com/ORESoftware/npp) =\u003e publish multiple packages and sync their semver versions\n\n\u003cbr\u003e\n\n\u003cb\u003e There are 3 projects in this git repo: \u003c/b\u003e\n\n\u003e\n\u003e 1. rolo\n\u003e 2. cholo\n\u003e 3. yolo\n\u003e\n\n\u003cbr\u003e \n\nEach project depends on the 2 other projects, to demonstrate NLU working with circular deps.\nNLU works by searching your fs for relevant projects. To restrict the search you use an env variable,\notherwise, NLU will search starting from $HOME, which is slower. So it's better to restrict it,\nwhich is easy to do.\n\n\nDepending on what your main/primary project is, the tree looks like this:\n\n```\n      └─ cholo1\n           ├─ yolo3\n           │  ├─ cholo1\n           │  └─ rolo2\n           └─ rolo2\n              ├─ cholo1\n              └─ yolo3\n```\n\nor like this:\n\n```\n        └─ rolo2\n           ├─ cholo1\n           │  ├─ yolo3\n           │  └─ rolo2\n           └─ yolo3\n              ├─ cholo1\n              └─ rolo2\n\n```\n\n\nor like this:\n\n```\n        └─ yolo3\n           ├─ cholo1\n           │  ├─ yolo3\n           │  └─ rolo2\n           └─ rolo2\n              ├─ cholo1\n              └─ yolo3\n\n```\n\n\u003ci\u003e =\u003e (Your main/primary project is whatever project is in your PWD/CWD). \u003c/i\u003e\n\n\u003cbr\u003e\n\n#### As you can see from this image, rolo cholo and yolo are each linked to each other:\n\n\u003cimg width=\"400px\" align=\"right\" src=\"https://raw.githubusercontent.com/oresoftware/media/master/namespaces/nlu/nlu-rolo-cholo-yolo.jpg\"\u003e\n\n\u003cbr\u003e\n\nThese 3 NPM packages could be in a mono-repo or could be separated into different VCS repos, doesn't really matter.\nWe are going to link the packages together by way of their respective node_modules folders, using npm-link-up.\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n## Instructions on how to replicate/run the demo\n\n\n1. Install npm-link-up (best to have the latest):\n\n\u003e\n\u003e```bash\n\u003e$ npm i -g npm-link-up\n\u003e```\n\u003e\n\n\u003cbr\u003e\n\n2. Clone rolo-cholo-yolo on your local system\n\n\u003e\n\u003e```bash\n\u003e$ git clone https://github.com/ORESoftware/rolo-cholo-yolo.git\n\u003e```\n\u003e\n\n\u003cbr\u003e\n\n3. cd into the cloned project, and run `$ pwd`\n\nYou should get something like this:\n\n\u003e\n\u003e```\n\u003e/home/you/projects/rolo-cholo-yolo\n\u003e```\n\u003e\n\n\u003cbr\u003e\n\n4. For each package in the packages folder (rolo, cholo, and yolo) run:\n\n\u003e\n\u003e```bash\n\u003e$ nlu init\n\u003e```\n\u003e\n\nWhen it prompts you for a `searchRoot`, you can enter this line:\n\n\u003e\n\u003e```\n\u003e/home/you/projects/rolo-cholo-yolo\n\u003e```\n\u003e\n\nor better yet, enter this:\n\n\u003e\n\u003e```\n\u003e$HOME/projects/rolo-cholo-yolo\n\u003e```\n\u003e\n\nUsing environment varables for `searchRoots` allows you to work on projects with other people, or yourself, if you work on more than one machine.\nSo as another step, create this env var and add it to ~/.bashrc or ~/.bash_profile:\n\n\u003e\n\u003e```\n\u003eexport my_nlu_search_root=\"$HOME/projects/rolo-cholo-yolo\";\n\u003e```\n\u003e\n\nThen in your .nlu.json files, you can use:\n\n\u003e\n\u003e```json\n\u003e{\n\u003e  \"searchRoots\":[\n\u003e    \"$my_nlu_search_root\"\n\u003e  ]\n\u003e}\n\u003e```\n\u003e\n\nAnd for each developer/machine that works on rolo/yolo/cholo, they can define `$my_nlu_search_root` to whatever path you want.\nEssentially each machine can have its own definition for the searchRoot(s) of your dependency tree.\n\nIf you want to keep things ever simpler, you can just use relative paths:\n\n\u003e\n\u003e```json\n\u003e{\n\u003e  \"searchRoots\":[\n\u003e    \"..\"\n\u003e  ]\n\u003e}\n\u003e```\n\u003e\n\nIf all projects are in the same directory, the above would work. This would be equivalent to the above:\n\n\u003e\n\u003e```json\n\u003e{\n\u003e  \"searchRoots\":[\n\u003e       \"../../packages\"\n\u003e  ]\n\u003e}\n\u003e```\n\u003e\n\nSo, by the way, you have should have run something like this:\n\n\u003e\n\u003e```bash\n\u003e( cd rolo \u0026\u0026 nlu init )\n\u003e( cd yolo \u0026\u0026 nlu init )\n\u003e( cd cholo \u0026\u0026 nlu init )\n\u003e```\n\u003e\n\n\u003cbr\u003e\n\n5. Now run the link!\n\nNow, in each `.nlu.json` file, there should be a array property called \"list\".\nNotice that \"async\", \"lodash\" and \"ramda\" did not make it into list, but \"rolo2\", \"cholo1\" and \"yolo3\" did.\nThat is because NLU did not find local copies of ramda and lodash, but did find local copies of the other 3.\n\n\u003cbr\u003e\n\nNow, you can cd into any of the 3 packages and run:\n\n\u003e\n\u003e```bash\n\u003e$ nlu run\n\u003e```\n\u003e\n\nIt will link up the project with the other 2 projects. Try running `$ nlu run` in all 3 projects.\nVisually inspect the node_modules folder for each project, so see the result.\n\n\u003cbr\u003e\n\n\n### You can use --dry or --dry-run\n\nFor reference, you can use `nlu run --dry` to get a visual of how the linkage will happen, without actually doing any writes.\n\n\n\u003cbr\u003e\n\n##### Tips, FAQ, etc\n\nFor tips or FAQ, see: \u003cbr\u003e\nhttps://github.com/ORESoftware/npm-link-up/tree/master/docs","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foresoftware%2Frolo-cholo-yolo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foresoftware%2Frolo-cholo-yolo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foresoftware%2Frolo-cholo-yolo/lists"}