{"id":16563080,"url":"https://github.com/markmhendrickson/grunt-hoist","last_synced_at":"2026-06-08T10:02:19.337Z","repository":{"id":57254943,"uuid":"85550883","full_name":"markmhendrickson/grunt-hoist","owner":"markmhendrickson","description":"Suite of Grunt tasks to deploy Node.js apps to hosts and execute related remote procedures.","archived":false,"fork":false,"pushed_at":"2019-01-01T20:32:51.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-24T16:31:21.185Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/markmhendrickson.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}},"created_at":"2017-03-20T08:12:16.000Z","updated_at":"2019-01-01T20:32:53.000Z","dependencies_parsed_at":"2022-08-31T08:31:45.199Z","dependency_job_id":null,"html_url":"https://github.com/markmhendrickson/grunt-hoist","commit_stats":null,"previous_names":["markmhx/grunt-deploy-files","markmhx/grunt-hoist"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/markmhendrickson/grunt-hoist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmhendrickson%2Fgrunt-hoist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmhendrickson%2Fgrunt-hoist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmhendrickson%2Fgrunt-hoist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmhendrickson%2Fgrunt-hoist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markmhendrickson","download_url":"https://codeload.github.com/markmhendrickson/grunt-hoist/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmhendrickson%2Fgrunt-hoist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34057158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"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-10-11T20:38:38.984Z","updated_at":"2026-06-08T10:02:19.304Z","avatar_url":"https://github.com/markmhendrickson.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# grunt-hoist\n\n[![Code Climate](https://codeclimate.com/github/markmhx/grunt-hoist/badges/gpa.svg)](https://codeclimate.com/github/markmhx/grunt-hoist)\n[![Code Climate issues badge](https://codeclimate.com/github/markmhx/grunt-hoist/badges/issue_count.svg)](https://codeclimate.com/github/markmhx/grunt-hoist/issues)\n[![David badge](https://david-dm.org/markmhx/grunt-hoist.svg)](https://david-dm.org/markmhx/grunt-hoist)\n\nThis repository contains the source code for a suite of Grunt tasks to deploy Node.js apps to hosts and execute related remote procedures.\n\n## Setup\n\nTo include this module in your package, simply run:\n\n``` \nnpm install grunt-hoist --save-dev\n```\n\n#### Environment variables\n\nThe following environment variables are managed by [Park Ranger](https://github.com/markmhx/park-ranger) and expected by tasks:\n\n| Name                   | Required            | Description                                                  | Example          |\n| :--------------------- | :------------------ | :----------------------------------------------------------- | :--------------- |\n| HOIST_DEST_HOST        | yes                 | Hostname of remote server                                    | example.com      |\n| HOIST_DEST_DIR         | yes                 | Directory on remote server for deployment of files           | /var/www/app     |\n| HOIST_DEST_USER        | yes                 | User name for authentication to remote server                | webmaster        |\n| HOIST_SYSTEMD_SERVICE  | no                  | Name of systemd service to start or restart upon deploy-app  | myapp            |\n\nAdditionally, the `ENV_NAME` variable used by Park Ranger is optionally used to determine filenames for app dependencies per below.\n\n\n## App files\n\nThe following files located in the parent repository directory are deployed upon app deployment, as available:\n\n- index.js\n- Gruntfile.js\n- package.json\n\nAfter these app files are deployed, dependencies are automatically loaded on the host using two methods. The first is simply to call `npm install --production` to install dependencies that can be sourced from npm. The second is to copy all local dependencies listed in the parent repository's package with the `file:../` prefix to the parent directory of `HOIST_DEST_DIR` on the host to ensure their availability.\n\nIf the `HOIST_SYSTEMD_SERVICE` environment variable is available, a systemd service with corresponding name on the host will also be restarted or started, depending on its current runtime status.\n\n## App dependencies\n\nCertain files and directories in the parent repository directory are treated as app dependencies to be deployed given their filenames, as available.\n\nThese dependencies include those for environment variables (e.g. `.env`), configurations (e.g. `.config.json`) and SSL certificates (e.g. `.cert`). Their source and destination filenames are determined using both the `ENV_NAME` environment variable and a standard `-deploy` suffix. If no `ENV_NAME` value is available, they are located using just the suffix.\n\nThe following describes how file and directory names would be mapped with `ENV_NAME` available as value \"example\":\n\n| Source                                      | Destination                                 |\n| :------------------------------------------ | :------------------------------------------ |\n| .cert-example-deploy                        | .cert-example                               |\n| .config-example-deploy.json                 | .config-example.json                        |\n| .env-example-deploy                         | .env-example                                |\n\nAnd the following describes how they would be mapped without an `ENV_NAME` value available:\n\n| Source                                      | Destination                                 |\n| :------------------------------------------ | :------------------------------------------ |\n| .cert-deploy                                | .cert                                       |\n| .config-deploy.json                         | .config.json                                |\n| .env-deploy                                 | .env                                        |\n\nNote that the destination value is relative to the directory on the host indicated by `HOIST_DEST_DIR`. The source value is relative to the parent repository base directory.\n\n## Scripts\n\nInstallation of this package as a dependency makes the following scripts available automatically:\n\n| Command                         | Description                     |\n| :------------------------------ | :------------------------------ |\n| npm run deploy-all              | Deploys app and dependencies    |\n| npm run deploy-app              | Deploys app files               |\n| npm run deploy-dependencies     | Deploys dependencies            |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkmhendrickson%2Fgrunt-hoist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkmhendrickson%2Fgrunt-hoist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkmhendrickson%2Fgrunt-hoist/lists"}