{"id":19371121,"url":"https://github.com/qeffects/pluto-cli","last_synced_at":"2026-02-23T01:05:06.713Z","repository":{"id":261664745,"uuid":"777618721","full_name":"qeffects/pluto-cli","owner":"qeffects","description":"Package manager for lua projects","archived":false,"fork":false,"pushed_at":"2024-11-07T19:50:15.000Z","size":46,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-06T15:45:07.939Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qeffects.png","metadata":{"files":{"readme":"readme.MD","changelog":null,"contributing":null,"funding":null,"license":"license.md","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,"zenodo":null}},"created_at":"2024-03-26T07:38:38.000Z","updated_at":"2025-04-01T13:20:37.000Z","dependencies_parsed_at":"2024-11-09T05:01:43.715Z","dependency_job_id":null,"html_url":"https://github.com/qeffects/pluto-cli","commit_stats":null,"previous_names":["qeffects/pluto-cli"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/qeffects/pluto-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qeffects%2Fpluto-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qeffects%2Fpluto-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qeffects%2Fpluto-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qeffects%2Fpluto-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qeffects","download_url":"https://codeload.github.com/qeffects/pluto-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qeffects%2Fpluto-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280733185,"owners_count":26381786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-10T08:17:28.302Z","updated_at":"2025-10-24T03:39:10.188Z","avatar_url":"https://github.com/qeffects.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pluto\n\nThe package manager for Lua projects\n\n## Installing Pluto\n\nAs a pre-requisite you need to have installed [Node.js](https://nodejs.org/en) and [git](https://git-scm.com/) on your computer    \nAnd available in your path setup   \nNext simply run `npm i -g @qfx/pluto` in your command line   \nAfter the command completes you can test if pluto is available by simply running `pluto`\n\n## Using Pluto in your projects\n\nStart off by running `pluto fetch` this will update (or create a new)    \nyour local package cache to the newest available version     \nThis step is a requisite for doing almost anything else  \n  \nIf you already have a project where you want to use pluto packages you can simply navigate to it in your command line, e.g.  \n`cd project-folder` and run  \n`pluto init -c` this will run an interactive prompt and initialize the file structure needed for pluto operation\n\nAlternatively if you want a fresh project you can run `pluto init` without any arguments, it will create a new folder in the current working directory for your command line\n\n### **!! Important !!**\nIf you want pluto to work seamlessly with your regular require you have to add this to the very top of the start of your code (e.g. main.lua in love or similar):  \n```lua\nrequire(\"pluto\")\n```\n\nAfter this you can simply use `require(\"PackageName\")` instead of `require(\"pluto_modules/PackageName\")`  \n\n### Gitignore\nYou should add the following entries to your .gitignore file:\npluto.lock\n/pluto_modules/*\n\n\n## Adding a first package to your project\n\nAfter having initialized a project you can run `pluto list` to get a list of all available packages  \n\nOnce you have a specific package in mind run `pluto add PackageName`  \nAfter you have added everything you need you can run `pluto install` which will fetch and install the packages locally (pluto add only changes your module.json)  \n\n## Version locking\n### Version modifiers\nBefore we get to the commands to lock and unlock packages it's important to understand version modifiers in pluto,  \nSimply a version modifier is an addition to the package name, there are 2 types:  \n#### Git tag lock\nSets up a package to track a specific git tag, it's formatted like `PackageName@1.0.0` 1.0.0 being the name of the git tag\n\n#### Git commit lock\nSets up a package to track a specific git commit, it's formatted like `PackageName#15fasd` 15fasd being the git commit you wish to track\n\nPackage versions can be made stable between installs and updates by either:  \nInstalling your package initially with a version modifier like this:  \n`pluto add PackageName#as3123`  \n\nOr alternatively you can run the lock command like so  \n`pluto lock PackageName` Which will lock the package to the current commit  \n`pluto lock PackageName -t 1.0.0` Which will lock the package to a specific git tag  \n`pluto lock PackageName -c 14qe51d` Which will lock the package to a specific git commit  \n\nAnd if you no longer need your version to be locked simply run  \n`pluto unlock PackageName`  \n\nIt's important to note that locking a package to a specific tag will change it's module name so \n```lua\nrequire(\"PackageName\")\n```\nbecomes\n```lua\nrequire(\"PackageName#5123dfs\")\n```\n\n# All of the Commands:\n\n## pluto add\nAdds a new dependency to your current root project  \n\n `-h` Shows help  \n `-n \u003cName\u003e` Bypasses the name prompt, can also compound with a tag or commit like name@tag or name#commitHash  \n `-c` Sets the new dependency to track a commit (find in git or use the pluto inspect \u003cName\u003e -c command to list them)  \n `-t` Sets the new dependency to track a tag (find in git or use the pluto inspect \u003cName\u003e -t command to list them)  \n `-l` Sets the new dependency to track the latest commit  \n\n## pluto fetch\nInitializes or updates your local module depot(cache)  \nRun this whenever you want to update packages to their newest commit or new packages have been added  \n\n`-h` Shows help  \n\n## pluto init\nInitializes your new project directory and a basic file structure skeleton.  \n\n  `-h` Shows help for this command  \n  `-n \u003cName\u003e` Skips the name prompt  \n  `-c` Initializes the project structure in the current working directory  \n\n## pluto inspect [package]\nShows all of the information about a module  \n\n  `package` the name of the module to be inspected  \n  `-h` Shows help for this command   \n  `-c \u003ccommit\u003e` Finds if this package has a commit  \n  `-c` Lists all of the commits for this module  \n  `-t \u003ctag\u003e` Finds if this package has a tag  \n  `-t` Lists all of the tags for this module  \n\n## pluto install\nInstalls all of your dependencies and their sub dependencies in to your project directory\n\n  `-h` Shows help for this command   \n\n## pluto list\nList view of all available/installed/dependent modules  \n\n`-h` Shows help for this command  \n`-i` Lists installed modules  \n`-b` Bypasses compatiblity checks  \n`-d` Lists dependencies  \n`no arguments` Lists modules that are available to be added to your project, including your framework and runtime settings  \n\n## pluto lock [package]\nLocks a dependency to a specific version  \n\n`package` Name of the package to lock  \n`-h` Shows help for this command   \n`-t \u003ctag\u003e` Locks a dependency to a specific git tag  \n`-c \u003ccommit\u003e` Locks a dependency to a specific git commit  \n`no arguments` Locks a dependency to the current commit  \n\n## pluto remove [package]\nRemoves a package from your dependencies  \n\n`package` Name of the package to remove  \n`-h` Shows help for this command  \n\n## pluto unlock [package]\nUnlocks the version of the dependency to be installed\n\n`package` Name of the package to unlock  \n`-h` Shows help for this command  \n\n## pluto update\nUpdates all of your packages to their latest available versions  \nCan also be used to reset pluto_modules and pluto.lock  \n\n`-h` Shows help for this command  \n\n# module.json\n\nThis file contains the information about your project such as all of the direct dependencies, name, description etc\nMost of these are fairly self-explanatory, just string fields for display or future use, you can populate them at your leisure.  \n\nThere are 2 interesting optional fields:\n\n\"runtime\": \"*\"  \n\"frameworks\": [\"*\"]  \n\nAs initiated they won't do anything, but if you desire you can change them to hide packages that  \nDon't fit the target runtime and/or framework conditions  \nHere's the list of runtimes, simply copy one in to your module.json if you wish:\n- \"Luajit2.0\"\n- \"Luajit2.1\"\n- \"Luajit2.1beta3\"\n- \"Lua5.0\"\n- \"Lua5.1\"\n- \"Lua5.2\"\n- \"Lua5.3\"\n- \"Lua5.4\"\n- \"Luau\"\n\nNote that there's a bit of a compatibility matrix going on, with your project having \"Lua5.4\" it will act as if supports 5, 5.1, 5.2 etc.\n\nAnd here's the list of the frameworks:\n- \"love12\"\n- \"love11\"\n- \"love10\"\n- \"lapis\"\n- \"gmod\"\n- \"roblox\"\n\n## Contributing new packages\n\nSee the repo here: [Pluto Packages](https://github.com/qeffects/pluto-packages/tree/main)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqeffects%2Fpluto-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqeffects%2Fpluto-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqeffects%2Fpluto-cli/lists"}