PhpStorm 上传两个文件的快捷键

Keyboard short for uploading two files in PhpStorm

问题

在 PhpStorm 中,我有一个 style.css- 和一个 app.js- 文件,我必须一遍又一遍地上传到服务器。我正在尝试使其自动化。

它们是由 Webpack 编译的,所以它们是 generated/compiled。这意味着我不能简单地使用 'Tools' >> 'Deployment' >> 'Upload to...'(因为该文件不是也不会每次都打开)。


我目前在做什么

目前,每次我想查看我所做的更改时,我都会这样做(针对每个文件):

  1. 导航到文件树中的文件(使用鼠标)
  2. Select这
  3. 我已经为 Main menu >> Tools >> Deployment >> Upload to... 设置了快捷方式,之后我 select 我要上传到的服务器。

我每天这样做大约 100 多次。


理想的解决方案

理想的解决方案是,如果我按 CMD + Option + Shift[= 这样的快捷方式110=] + G 然后它将 selection 文件(范围?)上传到预定义的远程服务器。

解决方案尝试

  1. 打开并上传.

更改为这些文件(使用 CMD + p)然后上传它们(一旦它们打开)。但是文件是生成的,这意味着 PhpStorm 需要几秒钟来呈现内容(这是我可以对文件进行任何操作之前所必需的)——所以这并不快。

  1. .

录制宏,上传两个文件,如下所示:

如果我进入菜单并触发宏,它就可以工作了。到目前为止一切顺利。

但是如果我分配一个快捷键并在文件中触发该快捷键,那么它会显示:

如果我按“1”(让它上传到列表中的第 1 位),它就会上传我当前所在的文件(!?),而不是我的宏中的两个文件。

我尝试了几种不同的快捷键(以排除某种键盘快捷键冲突):

...相同的结果。

而且 PhpStorm 宏似乎并没有给我那么多选择。

  1. 键盘大师.

我试过使用 Keyboard Maestro 来完成。 但我无法正确设置它。因为如果它找不到文件夹(如果它们在屏幕外,或者如果我在不同的项目中并且忘记调整它们的快捷方式),那么它就会通过其余记录的动作进行爆炸,从而导致混乱。理想情况下,如果它在屏幕上找不到文件,它应该停止。


Update1 - 外部程序

即使无法在 PhpStorm 中执行此操作,- 是否还有其他程序可以实现此目的?

Update2 - 在 PhpStorm 中自动部署

我以前用过这个,- 但我已经发生过几次,我开始同步 waaaay 到许多文件,覆盖关键的核心文件。这看起来很聪明,但如果我忘记正确定义忽略可能会拆掉墙壁。

我希望有一个 'Automatic Deployment for theses files' 函数。

Update3 - 文件观察器

我研究了文件观察器(来自@LazyOne 的推荐)。基于this forum thread,则文件观察器不能用于上传文件。

可以使用外部程序完成 scp(安全复制协议):

步骤:
1. 创建一个Scope(对于编译文件app.jsstyle.css
2. 创建自定义 File Watcher,在 scp 范围内

  1. 开始于范围:
    为你的编译文件目录创建一个名为 scp files 的本地范围(我假设你的 webpack 编译到 dist 目录): 然后,要将 dist 目录添加到范围中,select 该文件夹并单击 Include Recursively。应用并移动到 File Watchers

  2. File Watcher 创建自定义模板:

    • 选择一个名字
    • 选择文件类型Any
    • 选择范围作为scp files(之前创建)
    • 选择程序作为scp
    • 选择参数作为$FileName$ REMOTE_USER@REMOTE_HOST:/REMOTE_DIR_PATH/$FileName$
    • 选择工作目录作为$FileDir$

就是这样,基本上我们所做的就是每次当该范围内的文件发生变化时,该文件就会被 scp 复制到远程服务器的相应路径。

瞧。应用 Everything 并重新编译您的项目,您将看到所有内容都已上传到服务器。

(我假设您已经设置了您的 ssh 客户端;生成了 public/private 密钥;在您的远程服务器中添加了一个 public 密钥;并且,知道连接到您的远程服务器的 ssh 凭据)

这是我自己想出来的。我发布了答案 here.

这两个问题有点相似但不完全相同。

我发现这种方式也不是最好的,因为它以明文形式存储服务器密码。所以我会留下这个问题,以防万一有人能想出更好的方法来实现这个目标。