Skip to content
This repository has been archived by the owner on Aug 31, 2021. It is now read-only.

Recoded version of Visual Studio Code extension 'vs-deploy', which provides commands to deploy files to one or more destinations.

License

Notifications You must be signed in to change notification settings

mkloubert/vscode-deploy-reloaded

Repository files navigation

vscode-deploy-reloaded

Share via Facebook Share via Twitter Share via Google+ Share via Pinterest Share via Reddit Share via LinkedIn Share via Wordpress Share via Email

Latest Release Installs Rating

Recoded version of Visual Studio Code extension vs-deploy, which provides commands to deploy files to one or more destinations.

The extension supports the following destinations:

Type
Amazon AWS S3 buckets
Apps or shell/batch scripts
Azure blob storages
Compiler
DropBox
External Node.js based scripts
FTP(S)
Local or shared network folders inside a LAN
Mail (SMTP)
SFTP
Slack
ZIP files

Table of contents

  1. Demos
  2. Preview
  3. Install
  4. How to use
  5. Install offline
  6. Support and contribute
  7. Related projects

Demos []

Deploying to SFTP []

Demo Deploying to SFTP

Deploy git commit []

Demo Deploy git commit

Sync when open []

Demo Sync when open

Auto remove on remote []

Demo Auto remove on remote

Download files []

Demo Download files

Check before deploy []

Demo Check before deploy

Compare files []

Demo Compare files

List remote files []

Demo List remote files

Tools []

Quick code execution []

Demo Quick code execution

Send files to other editors []

The following demo shows, how you can send a file to another VS Code instance over a secure and encrypted TCP connection:

Demo Send files to other editors

NPM helpers []

Provides some helpers for handling npm:

Demo NPM helpers

Preview []

Keep in mind, that this is a preview extension, which is in a good beta state.

The goal is to create a refactored version of vs-deploy, with a clean API and lots of more helpful tools and features, like multi workspace support.

If you are already using vs-deploy, it is recommended to disable the old extension, before you use vscode-deploy-reloaded.

Install []

Launch VS Code Quick Open (Ctrl + P), paste the following command, and press enter:

ext install vscode-deploy-reloaded

Or search for things like vscode-deploy-reloaded in your editor.

Demo Install extension

How to use []

Detailed information can be found at the wiki.

Otherwise...

Settings []

Open (or create) your settings.json in your .vscode subfolder of your workspace.

Add a deploy.reloaded section:

{
    "deploy.reloaded": {
    }
}

Packages []

A package is a description of files of your workspace that should be deployed.

Add the subsection packages and add one or more entry:

{
    "deploy.reloaded": {
        "packages": [
            {
                "name": "Version 2.3.4",
                "description": "Package version 2.3.4",
                "files": [
                    "**/*.php",
                    "/*.json"
                ],
                "exclude": [
                    "tests/**"
                ]
            }
        ]
    }
}

Have a look at the wiki, to get more information about packages.

Targets []

A target describes where a file or package should be transfered to.

Add the subsection targets and add one or more entry:

{
    "deploy.reloaded": {
        "targets": [
            {
                "type": "sftp",
                "name": "My SFTP folder",
                "description": "A SFTP folder",

                "dir": "/my_package_files",
                "host": "localhost", "port": 22,
                "user": "tester", "password": "password",

                "mappings": {
                    "/dir/of/files/that/should/be/mapped/**/*": "dir/on/target"
                }
            },
            {
                "type": "ftp",
                "name": "My FTP folder",
                "description": "A FTP folder",

                "dir": "/my_package_files",
                "host": "localhost", "port": 21,
                "user": "anonymous", "password": "",

                "deployed": [
                    {
                        "type": "sql",
                        "engine": "mysql",

                        "queries": [
                            "TRUNCATE TABLE `debug`",
                            "TRUNCATE TABLE `logs`"
                        ]
                    },
                    {
                        "target": "https://github.com/mkloubert"
                    }
                ]
            },
            {
                "type": "local",
                "name": "My local folder",
                "description": "A local folder",

                "dir": "E:/test/my_package_files"
            },
            {
                "type": "local",
                "name": "My network folder",
                "description": "A SMB shared network folder",

                "dir": "\\\\MyServer\\my_package_files"
            },
            {
                "type": "zip",
                "name": "My ZIP file",
                "description": "Create a ZIP file in a target directory",

                "target": "E:/test"
            },
            {
                "type": "mail",
                "name": "My mail server",
                "description": "An email deployer",

                "host": "smtp.example.com", "port": 465,
                "secure": true, "requireTLS": true,
                "user": "mkloubert@example.com", "password": "P@assword123!",
                "from": "mkloubert@example.com",
                "to": "tm@example.com, ys@example.com"
            },
            {
                "type": "script",
                "name": "My script",
                "description": "A deploy script",

                "script": "E:/test/deploy.js",
                "options": {
                    "TM": 5979,
                    "MK": "23979"
                }
            },
            {
                "type": "batch",
                "name": "My Batch",
                "description": "A batch operation",

                "targets": ["My mail server", "My ZIP file"]
            },
            {
                "type": "azureblob",
                "name": "My Azure blob storage",
                "description": "An container in an Azure blob storage",

                "container": "my-container",
                "account": "my-storage-account",
                "accessKey": "<ACCESS-KEY-FROM-AZURE-PORTAL>"
            },
            {
                "type": "s3bucket",
                "name": "My Amazon Bucket",
                "description": "An Amazon AWS S3 bucket",

                "bucket": "my-bucket"
            },
            {
                "type": "dropbox",
                "name": "My DropBox folder",
                "description": "Deploy to my DropBox folder",

                "token": "<ACCESS-TOKEN>"
            }
        ]
    }
}

Have a look at the wiki, to get more information about targets.

How to execute []

Press F1 and enter one of the following commands:

Name Description
Deploy Reloaded: API ... Handles API hosts.
Deploy Reloaded: Compare ... Opens a set of commands, to compare local and remote files.
Deploy Reloaded: Delete ... Commands for deleting files.
Deploy Reloaded: Deploy ... List of commands for deploying files.
Deploy Reloaded: List directory ... Lists a (remote) directory.
Deploy Reloaded: Log files ... Opens a log file of that extension.
Deploy Reloaded: Proxies ... Handles TCP proxies.
Deploy Reloaded: Pull ... Pull or download files from remote.
Deploy Reloaded: Select deploy operation ... Lets the user select an operation for the active document.
Deploy Reloaded: Show notification(s) ... (Re-)Shows one or more notifications from the extension's author(s).
Deploy Reloaded: Switches ... Handle switch targets.
Deploy Reloaded: Tools ... A set of helpful tools.

You can also use the following, predefined, shortcuts:

Command Shortcut (CTRL is CMD on Mac) Description
extension.deploy.reloaded.deleteFile CTRL + ALT + D, F Deletes the current file on remote.
extension.deploy.reloaded.deletePackage CTRL + ALT + D, W Deletes files of a package on remote.
extension.deploy.reloaded.deployFile CTRL + ALT + F Deploys the current file.
extension.deploy.reloaded.deployWorkspace CTRL + ALT + W Deploys files of a package.
extension.deploy.reloaded.listDirectory CTRL + ALT + L, D Lists a directory on remote.
extension.deploy.reloaded.pullFile CTRL + ALT + P, F Pulls / downloads the current file.
extension.deploy.reloaded.pullWorkspace CTRL + ALT + P, W Pulls / downloads files of a package from remote.
extension.deploy.reloaded.quickExecution CTRL + SHIFT + Q Quick JavaScript code execution.
extension.deploy.reloaded.receiveFile CTRL + ALT + S, R Waits for a file from a remote editor.
extension.deploy.reloaded.receiveFile.closeServer CTRL + ALT + S, C Cancels the receiving of a file from a remote editor.
extension.deploy.reloaded.sendFile CTRL + ALT + S, S Sends the current file to a remote editor.

Install offline []

If you have problems with a newer version of that extension (or have no connection to the Visual Studio Marketplace server), you can try to install a .vsix file from release section (s. Assets):

  • open the extension sidebar (CTRL + SHIFT + X)
  • click on the ellipsis in the right upper corner (More)
  • choose Install from VSIX...

Support and contribute []

If you like the extension, you can support the project by sending a donation via PayPal to me.

To contribute, you can open an issue and/or fork this repository.

To work with the code:

  • clone this repository
  • create and change to a new branch, like git checkout -b my_new_feature
  • run npm install from your project folder
  • open that project folder in Visual Studio Code
  • now you can edit and debug there
  • commit your changes to your new branch and sync it with your forked GitHub repo
  • make a pull request

If you like to create a translation, for example, you can take a look at this directory.

The API documentation can be found here.

Contributors []

Related projects []

node-enumerable []

node-enumerable is a LINQ implementation for JavaScript, which runs in Node.js and browsers.

node-simple-socket []

node-simple-socket is a simple socket class, which supports automatic RSA encryption and compression for two connected endpoints and runs in Node.js.

vscode-helpers []

vscode-helpers is a NPM module, which you can use in your own VSCode extension and contains a lot of helpful classes and functions.