{"id":28564025,"url":"https://github.com/appium/packweb","last_synced_at":"2025-06-10T13:09:22.864Z","repository":{"id":32054970,"uuid":"35626669","full_name":"appium/packweb","owner":"appium","description":"Tools for maintaining projects with large numbers of packages","archived":false,"fork":false,"pushed_at":"2023-01-05T08:14:56.000Z","size":1909,"stargazers_count":1,"open_issues_count":15,"forks_count":3,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-18T23:49:09.095Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-14T17:49:39.000Z","updated_at":"2020-07-11T06:26:31.000Z","dependencies_parsed_at":"2023-01-14T20:24:58.062Z","dependency_job_id":null,"html_url":"https://github.com/appium/packweb","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appium%2Fpackweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appium%2Fpackweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appium%2Fpackweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appium%2Fpackweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appium","download_url":"https://codeload.github.com/appium/packweb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appium%2Fpackweb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259080989,"owners_count":22802404,"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","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":"2025-06-10T13:09:20.679Z","updated_at":"2025-06-10T13:09:22.840Z","avatar_url":"https://github.com/appium.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"PackWeb\n=======\n\nThis is a collection of CLI tools designed to help with applications which are\nwebs of interrelated NPM packages. Features currently include:\n\n* show NPM owners for all packages and compare with lists of desired owners\n* automatically bring NPM ownership into line with what is desired\n\n## Install:\n\n```\nnpm install -g packweb\n```\n\n## Use:\n\nFirst of all we have to define a configuration file which specifies which NPM\nmodules we're interested in performing all our operations on. This should be\na JSON file with two keys: `packages` and `owners`. At the minimum, these are\nsimple arrays of package names and NPM usernames, e.g.:\n\n```json\n{\n    \"packages\": [\"foo\", \"bar\", \"baz\"],\n    \"owners\": [\"alice\", \"bob\", \"charlotte\"]\n}\n```\n\nWe can pass in this data to `packweb` as a command-line JSON string, a path to\na JSON file, or a URL for a JSON file (say if you want to keep it in a GitHub\nrepo). The simplest thing to do is simply `--show` ownership status:\n\n```\npackweb --show --config ./packweb.json\n```\n\nThis will output a color-coded report that tells you how the ownership status\nof the packages in your list differs from what's desired. If you want, you can\nautomatically update the ownership status (assuming you are yourself an owner\nof all the packages being managed by packweb):\n\n```\npackweb --update --config ./packweb.json\n```\n\nYou might be thinking that your project is a bit more variegated: you have some packages which should have some owners, and some packages which should have all owners, and yet others which should have even a different set of owners. That's easy to do by making your `packages` and `owners` keys a hash of \"groups\" instead! Take a look at this example `packweb.json`:\n\n```json\n{\n    \"packages\": {\n        \"coredevs\": [\"foo\", \"bar\"],\n        \"contractors\": [\"bar\"],\n        \"admins\": [\"foo\", \"bar\", \"baz\"]\n    },\n    \"owners\": {\n        \"coredevs\": [\"alice\", \"bob\"],\n        \"contractors\": [\"charlotte\"],\n        \"admins\": [\"doug\", \"erin\"]\n    }\n}\n```\n\nYou can get as complicated as you like with groups in this way. The only rule\nyou have to follow is making sure the group names are the same for both\n`packages` and `owners`!\n\nFor a complicated `packweb.json` example, see [Appium's\npackweb.json](https://github.com/appium/appium/blob/master/packweb.json).\n\n## Hack on Packweb\n\n```\n# transpile and run tests on every change\ngulp\n\n# transpile and run tests once\ngulp once\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappium%2Fpackweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappium%2Fpackweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappium%2Fpackweb/lists"}