{"id":15170817,"url":"https://github.com/mkloubert/vs-deploy","last_synced_at":"2025-10-01T05:30:57.457Z","repository":{"id":57394080,"uuid":"75967743","full_name":"mkloubert/vs-deploy","owner":"mkloubert","description":"Visual Studio Code extension that provides commands to deploy files of a workspace to a destination.","archived":true,"fork":false,"pushed_at":"2018-10-05T22:35:07.000Z","size":27832,"stargazers_count":133,"open_issues_count":60,"forks_count":24,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-01-17T11:12:50.336Z","etag":null,"topics":["aws","azure","coffeescript","compare-files","deployment","download","dropbox","ftp","http","less","nodejs","pug","rest-api","sftp","smtp","sql","typescript","uglifyjs","vscode-extension","web"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=mkloubert.vs-deploy","language":"TypeScript","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/mkloubert.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2016-12-08T19:17:07.000Z","updated_at":"2024-12-01T21:22:55.000Z","dependencies_parsed_at":"2022-09-13T02:31:49.030Z","dependency_job_id":null,"html_url":"https://github.com/mkloubert/vs-deploy","commit_stats":null,"previous_names":[],"tags_count":330,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvs-deploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvs-deploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvs-deploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvs-deploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkloubert","download_url":"https://codeload.github.com/mkloubert/vs-deploy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234827057,"owners_count":18892884,"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":["aws","azure","coffeescript","compare-files","deployment","download","dropbox","ftp","http","less","nodejs","pug","rest-api","sftp","smtp","sql","typescript","uglifyjs","vscode-extension","web"],"created_at":"2024-09-27T08:23:22.361Z","updated_at":"2025-10-01T05:30:56.488Z","avatar_url":"https://github.com/mkloubert.png","language":"TypeScript","readme":"# vs-deploy\n\n[![Latest Release](https://vsmarketplacebadge.apphb.com/version-short/mkloubert.vs-deploy.svg)](https://marketplace.visualstudio.com/items?itemName=mkloubert.vs-deploy)\n[![Installs](https://vsmarketplacebadge.apphb.com/installs/mkloubert.vs-deploy.svg)](https://marketplace.visualstudio.com/items?itemName=mkloubert.vs-deploy)\n[![Rating](https://vsmarketplacebadge.apphb.com/rating-short/mkloubert.vs-deploy.svg)](https://marketplace.visualstudio.com/items?itemName=mkloubert.vs-deploy#review-details)\n\n[![Gitter](https://badges.gitter.im/mkloubert/vs-deploy.svg)](https://gitter.im/mkloubert/vs-deploy?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n[Visual Studio Code](https://code.visualstudio.com/) (VS Code) extension that provides commands to deploy files of a workspace to a destination.\n\nThe extension supports the following destination types:\n\n| Type | Supports download / pull? |\n| ---- |:--:|\n| [Amazon AWS S3 buckets](https://github.com/mkloubert/vs-deploy/wiki/target_s3bucket) | X |\n| [Apps / executables / scripts (bash, batch, e.g.)](https://github.com/mkloubert/vs-deploy/wiki/target_app) | |\n| [Azure blob storages](https://github.com/mkloubert/vs-deploy/wiki/target_azureblob) | X |\n| [DropBox](https://github.com/mkloubert/vs-deploy/wiki/target_dropbox) | X |\n| [External Node.js based scripts](https://github.com/mkloubert/vs-deploy/wiki/target_script) | X |\n| [FTP](https://github.com/mkloubert/vs-deploy/wiki/target_ftp) | X |\n| [HTTP(s)](https://github.com/mkloubert/vs-deploy/wiki/target_http) | |\n| [Local or shared network folders inside a LAN](https://github.com/mkloubert/vs-deploy/wiki/target_local) | X |\n| [Mail (SMTP)](https://github.com/mkloubert/vs-deploy/wiki/target_mail) | |\n| [Remote machines like other VS Code instances](https://github.com/mkloubert/vs-deploy/wiki/target_remote) | |\n| [REST APIs](https://github.com/mkloubert/vs-deploy/wiki/target_api) like [vs-rest-api](https://github.com/mkloubert/vs-rest-api) | X |\n| [SFTP](https://github.com/mkloubert/vs-deploy/wiki/target_sftp) | X |\n| [Slack](https://github.com/mkloubert/vs-deploy/wiki/target_slack) | |\n| [SQL](https://github.com/mkloubert/vs-deploy/wiki/target_sql) | |\n| [ZIP files](https://github.com/mkloubert/vs-deploy/wiki/target_zip) | X |\n\nThere is also build-in support for the following [compilers and processors](https://github.com/mkloubert/vs-deploy/wiki/targetoperations#compile-):\n\n* [CoffeeScript](http://coffeescript.org/)\n* [html-minifier](https://www.npmjs.com/package/html-minifier)\n* [Less](http://lesscss.org/)\n* [Pug](https://pugjs.org/)\n* [TypeScript](https://www.typescriptlang.org/)\n* [UglifyJS 2](https://github.com/mishoo/UglifyJS2)\n\n... and these languages:\n\n* brazilian portuguese (thanks to [Celio Rodrigues](https://github.com/rodriguescelio)!)\n* english\n* french (thanks to [neiobaf](https://github.com/neiobaf) and [Mathieu Lesniak](https://github.com/mathieulesniak)!)\n* german\n* spanish (thanks to [alejandroivan](https://github.com/alejandroivan)!)\n* russian (thanks to [sag3ll0](https://github.com/sag3ll0)!)\n\nIf you would like to add another translation, please read [that issue](https://github.com/mkloubert/vs-deploy/issues/18) first.\n\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/MarcelKloubert)\n\n## Table of contents\n\n1. [Demos](#demos-)\n   * [Deploying to SFTP](#deploying-to-sftp-)\n   * [Deploy on change](#deploy-on-change-)\n   * [Download / pull from SFTP](#download--pull-from-sftp-)\n   * [Check for newer files](#check-for-newer-files-)\n   * [Sync when open](#sync-when-open-)\n   * [ZIP file](#deploy-to-zip-file-)\n   * [Deploy to remote Visual Studio Code instance](#deploy-to-remote-visual-studio-code-instance-)\n2. [Recoded version](#recoded-version-)\n3. [Install](#install-)\n4. [How to use](#how-to-use-)\n   * [Settings](#settings-)\n      * [Packages](#packages-)\n      * [Targets](#targets-)\n   * [How to execute](#how-to-execute-)\n\n## Recoded version [[\u0026uarr;](#table-of-contents)]\n\nI have started a new and recoded version of that extension, called [vscode-deploy-reloaded](https://github.com/mkloubert/vscode-deploy-reloaded), which is still in a preview, but good beta state.\n\n## Demos [[\u0026uarr;](#table-of-contents)]\n\n### Deploying to SFTP [[\u0026uarr;](#demos-)]\n\n![Demo SFTP](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo.gif)\n\n### Deploy on change [[\u0026uarr;](#demos-)]\n\n![Demo Deploy on change](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo2.gif)\n\n### Download / pull from SFTP [[\u0026uarr;](#demos-)]\n\n![Demo pull from SFTP](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo6.gif)\n\n### Compare files [[\u0026uarr;](#demos-)]\n\n![Demo compare files](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo7.gif)\n\n### Check for newer files [[\u0026uarr;](#demos-)]\n\n![Demo check for newer files](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo9.gif)\n\n### Sync when open [[\u0026uarr;](#demos-)]\n\n![Demo sync when open](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo10.gif)\n\n### Deploy to ZIP file [[\u0026uarr;](#demos-)]\n\n![Demo ZIP](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo4.gif)\n\n### Deploy to remote Visual Studio Code instance [[\u0026uarr;](#demos-)]\n\n![Demo Remote](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo3.gif)\n\n## Install [[\u0026uarr;](#table-of-contents)]\n\nLaunch VS Code Quick Open (Ctrl+P), paste the following command, and press enter:\n\n```bash\next install vs-deploy\n```\n\nOr search for things like `vs-deploy` in your editor:\n\n![Screenshot VSCode Extension search](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/screenshot1.png)\n\n## How to use [[\u0026uarr;](#table-of-contents)]\n\nDetailed information can be found at the [wiki](https://github.com/mkloubert/vs-deploy/wiki).\n\nOtherwise...\n\n### Settings [[\u0026uarr;](#how-to-use-)]\n\nOpen (or create) your `settings.json` in your `.vscode` subfolder of your workspace.\n\nAdd a `deploy` section:\n\n```json\n{\n    \"deploy\": {\n    }\n}\n```\n\n#### Packages [[\u0026uarr;](#settings-)]\n\nA package is a description of files of your workspace that should be deployed.\n\nAdd the subsection `packages` and add one or more entry:\n\n```json\n{\n    \"deploy\": {\n        \"packages\": [\n            {\n                \"name\": \"Version 2.3.4\",\n                \"description\": \"Package version 2.3.4\",\n                \"files\": [\n                    \"**/*.php\",\n                    \"/*.json\"\n                ],\n                \"exclude\": [\n                    \"tests/**\"\n                ],\n                \"deployOnSave\": true\n            }\n        ]\n    }\n}\n```\n\nLook at the [wiki](https://github.com/mkloubert/vs-deploy/wiki#packages-) to get more information about packages.\n\n#### Targets [[\u0026uarr;](#settings-)]\n\nA target describes where a file or package should be transfered to.\n\nAdd the subsection `targets` and add one or more entry:\n\n```json\n{\n    \"deploy\": {\n        \"targets\": [\n            {\n                \"type\": \"sftp\",\n                \"name\": \"My SFTP folder\",\n                \"description\": \"A SFTP folder\",\n                \"dir\": \"/my_package_files\",\n                \"host\": \"localhost\", \"port\": 22,\n                \"user\": \"tester\", \"password\": \"password\",\n\n                \"checkBeforeDeploy\": true,\n\n                \"mappings\": [\n                    {\n                        \"source\": \"dir/of/files/that/should/be/mapped\",\n                        \"target\": \"dir/on/target\"\n                    }\n                ]\n            },\n            {\n                \"type\": \"ftp\",\n                \"name\": \"My FTP folder\",\n                \"description\": \"A FTP folder\",\n                \"dir\": \"/my_package_files\",\n                \"host\": \"localhost\", \"port\": 21,\n                \"user\": \"anonymous\", \"password\": \"\",\n\n                \"deployed\": [\n                    {\n                        \"type\": \"sql\",\n                        \"engine\": \"mysql\",\n\n                        \"queries\": [\n                            \"TRUNCATE TABLE `debug`\",\n                            \"TRUNCATE TABLE `logs`\"\n                        ]\n                    },\n                    {\n                        \"target\": \"https://github.com/mkloubert\"\n                    }\n                ]\n            },\n            {\n                \"type\": \"local\",\n                \"name\": \"My local folder\",\n                \"description\": \"A local folder\",\n                \"dir\": \"E:/test/my_package_files\"\n            },\n            {\n                \"type\": \"local\",\n                \"name\": \"My network folder\",\n                \"description\": \"A SMB shared network folder\",\n                \"dir\": \"\\\\\\\\MyServer\\\\my_package_files\"\n            },\n            {\n                \"type\": \"zip\",\n                \"name\": \"My ZIP file\",\n                \"description\": \"Create a ZIP file in a target directory\",\n                \"target\": \"E:/test\"\n            },\n            {\n                \"type\": \"mail\",\n                \"name\": \"My mail server\",\n                \"description\": \"An email deployer\",\n                \"host\": \"smtp.example.com\", \"port\": 465,\n                \"secure\": true, \"requireTLS\": true,\n                \"user\": \"mkloubert@example.com\", \"password\": \"P@assword123!\",\n                \"from\": \"mkloubert@example.com\",\n                \"to\": \"tm@example.com, ys@example.com\"\n            },\n            {\n                \"type\": \"script\",\n                \"name\": \"My script\",\n                \"description\": \"A deploy script\",\n                \"script\": \"E:/test/deploy.js\",\n                \"options\": {\n                    \"TM\": 5979,\n                    \"MK\": \"23979\"\n                }\n            },\n            {\n                \"type\": \"http\",\n                \"name\": \"My HTTP service\",\n                \"description\": \"A HTTP service on a HTTP server, e.g.\",\n                \"url\": \"https://host.example.com/webdav/?file=${VSDeploy-File}\",\n                \"user\": \"mkloubert\", \"password\": \"P@ssword123!\"\n            },\n            {\n                \"type\": \"remote\",\n                \"name\": \"My remote target\",\n                \"description\": \"Some remote VS Code instances to deploy to\",\n                \"hosts\": [\"localhost\", \"192.168.0.101\", \"192.168.0.101:5979\"]\n            },\n            {\n                \"type\": \"app\",\n                \"name\": \"My App\",\n                \"description\": \"An app to call\",\n                \"app\": \"E:/test/deploy.cmd\",\n                \"arguments\": [\"a\", \"b\", \"c\"]\n            },\n            {\n                \"type\": \"batch\",\n                \"name\": \"My Batch\",\n                \"description\": \"A batch operation\",\n                \"targets\": [\"My mail server\", \"My ZIP file\"]\n            },\n            {\n                \"type\": \"azureblob\",\n                \"name\": \"My Azure blob storage\",\n                \"description\": \"An container in an Azure blob storage\",\n                \"container\": \"my-container\",\n                \"account\": \"my-storage-account\",\n                \"accessKey\": \"\u003cACCESS-KEY-FROM-AZURE-PORTAL\u003e\"\n            },\n            {\n                \"type\": \"s3bucket\",\n                \"name\": \"My Amazon Bucket\",\n                \"description\": \"An Amazon AWS S3 bucket\",\n                \"bucket\": \"my-bucket\"\n            },\n            {\n                \"type\": \"dropbox\",\n                \"name\": \"My DropBox folder\",\n                \"description\": \"Deploy to my DropBox folder\",\n\n                \"token\": \"\u003cACCESS-TOKEN\u003e\"\n            },\n            {\n                \"type\": \"api\",\n                \"name\": \"My REST API\",\n                \"description\": \"Deploys to a vs-rest-api\",\n\n                \"host\": \"vscode.example.com\",\n                \"user\": \"rgrimes\", \"password\": \"lori\"\n            }\n        ]\n    }\n}\n```\n\nLook at the [wiki](https://github.com/mkloubert/vs-deploy/wiki#targets-) to get more information about targets.\n\n### How to execute [[\u0026uarr;](#how-to-use-)]\n\nPress `F1` to open the list of commands and enter one of the following commands:\n\n![Demo How to execute](https://raw.githubusercontent.com/mkloubert/vs-deploy/master/img/demo5.gif)\n\n| Name | Description | Shortcut (`CTRL` is `CMD` on Mac) |\n| ---- | --------- | --------- |\n| `Deploy: Change switch` | Changes the options of a [switch](https://github.com/mkloubert/vs-deploy/wiki/target_switch). | This command does not have a default key binding. If you want to setup a shortcut for `extension.deploy.changeSwitch`, you can update `keybindings.json` as described [here](https://code.visualstudio.com/docs/getstarted/keybindings#_advanced-customization). |\n| `Deploy: Compare files` | Compares a local file with a remote one. | `CTRL+ALT+P, C` |\n| `Deploy: Deploy current file / folder` | Deploys the current opened file. | `CTRL+ALT+F` |\n| `Deploy: Deploy workspace` | Deploys a specific package. | `CTRL+ALT+W` |\n| `Deploy: Open example / template` | Opens a [template](https://github.com/mkloubert/vs-deploy/wiki/templates) from one or more offical and/or custom repository. | This command does not have a default key binding. If you want to setup a shortcut for `extension.deploy.openTemplate`, you can update `keybindings.json` as described [here](https://code.visualstudio.com/docs/getstarted/keybindings#_advanced-customization).  |\n| `Deploy: Pull current file / folder` | Pulls the current opened file. | `CTRL+ALT+P, F` |\n| `Deploy: Pull workspace` | Pulls a specific package. | `CTRL+ALT+P, W` |\n| `Deploy: Select workspace` | Changes the current workspace, s. [Multi-root Workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces). | This command does not have a default key binding. If you want to setup a shortcut for `extension.deploy.selectWorkspace`, you can update `keybindings.json` as described [here](https://code.visualstudio.com/docs/getstarted/keybindings#_advanced-customization). |\n| `Deploy: Start/stop listening for files` | Start/stop listening for files from a remote machine. | `CTRL+ALT+L` |\n","funding_links":["https://paypal.me/MarcelKloubert"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkloubert%2Fvs-deploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkloubert%2Fvs-deploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkloubert%2Fvs-deploy/lists"}