我正在寻找一种让PhpStorm查看文件的方法--这样每次文件发生变化时,它都应该将该文件同步到远程服务器。并且“上传外部更改”-选项(使用“启动显式保存操作”)不适合我。很近-但没有雪茄。它让我两次保存css文件--只有在我第二次保存scss-文件之后,它才上传gulp编译的-style.css-文件,就像我希望它在第一次“保存”之后所做的那样。我知道这是一件微不足道的事情--但是对于我每天轻松做200到400次的事情,我希望它能运行得尽可能流畅。这是我花了两次保存文件的时间--但这也是我心中的疑问,每次有什么事情不像我想要的那样--那么我总是必须先检查文件是否上传正确。
我正在与Wordpress工作,我有一个5-8 SCSS-文件,正在编译使用gulp。该吞咽过程相当全面(自动重新定位、合并媒体查询、minifycss等),因此编译文件需要几毫秒。我假设是编译时使PhpStorm‘错过’了style.css已经改变了,因此不要上传到第一个‘保存’。因为有时所有的东西都是在第一次“保存”之后上传的--但每8次就上传一次(大约)。
额外有趣的事实(这可能表明身体被埋在哪里):如果我从后台的终端运行gulp watch,那么我必须保存该文件,等待至少2-4秒,然后再保存,然后再上传gulp编译的-style.css-文件。如果我按“保存”、“保存”--暂停时间小于2-4秒,但只有1秒的暂停,那么PhpStorm就永远不会同步已编译的-style.css-文件。如果我从PhpStorm的Gulp集成(不是终端,而是Gulp提示符)运行gulp watch,那么我可以连续保存两次,其间只有.5第二次暂停(当底部的进度条消失时),然后它就会上传(每次都是一致的)。
唯一的问题是只上传了gulp编译的-style.css-文件。其他的一切都很完美。
以下是我尝试过的:
**Attempt1 1)我以前使用过Atom,其中FTP-配置是使用带有..ftpconfig文件的插件建立的。在该文件中,有一个'watch: []'-parameter,在这里我可以指定一个文件来“监视”。真是奇迹!!我试着找了一个插件,做了类似的事情--但找不到。
**我读了一本关于同样内容的支持页。看起来,如果SCSS-文件是使用PhpStorm编译的,那么它就知道上传style.css-文件(编译后)。我无法使用PhpStorms的SCSS编译来设置我的gulp文件(因为它编译它,然后通过多个过程来传递内容。如果我改变了项目,每次都要设置它,那么这将是一个痛苦的维持。
**我正在考虑做一个宏或什么的。然后查看是否可以将CMD-s重新映射为“保存当前文件和执行宏”。但是如果我不编辑scss-文件(只是一些php-文件),那么它仍然会上传style.css-文件。这绝不是一个很好的解决方案,但它只是向我们展示了我已经走到了多远,找到了一个自动化的解决方案。
**Attempt4 4)我考虑将它构建到gulp文件中,在编译了style.css-文件之后,它必须上传style.css-文件。我考虑过从.idea-folder获取主机和用户名,并从密钥链获得密码,然后以这种方式建立sftp连接。但这样做很快就变得广泛起来,所以我希望有一种更容易/更好的方法。
Addition1
LazyOne问,我用文件观察者做了什么,就这样了。我试着让PhpStorm编译Scss文件(所以PhpStorm基本上做了Gulp今天为我做的事情)。这是一个scss文件类型(文件类型),范围是我的项目中的scss-文件,指向我的红宝石安装的scss文件,等等等等。
然而..。我意识到很难让PhpStorm对Scss-文件做与Gulp文件相同的事情。
我使用的Gulp文件是随每个项目一起提供的(默认情况下),我们是几个从事相同项目的网页设计师。所以,如果我突然做了一些其他的事情,使用那个杯状文件,那么我非常肯定,我将能够产生完全相同的结果,否则我很肯定我的同事会剥我的皮。但是,在我放弃之前,我已经把它作为我的论点了(我仍然需要在这一行中做几件事情,在它做我的杯状文件之前):
--no-cache --update $FileName$:../../style.css --style compressed --sourcemap=none..。然而..。在这样做时,我可以得出这样的结论:style.css-文件是在每次保存(得分!)上上传的。这意味着,如果我可以设置某种文件监视程序,那么希望PhpStorm能够监视该文件,因此在Gulp编译style.css之后将其上传。
所以我试着制作了一个文件监视器,它可以监视style.css-文件--但是我不知道把什么作为我的程序。因为基本上,我希望PhpStorm用棍子戳一下style.css-文件三次,然后意识到文件已经更改并上传到服务器。这能自动完成吗?
发布于 2017-05-24 08:17:49
好的。这是怎么做的!
重要的部分是PhpStorm监视style.css-文件。如果您指定一个文件监视程序来查看该文件,它就会这样做。现在,我开始尝试使用文件监视程序运行Gulp文件。然后我试着用文件监视程序编译scss-文件。但这是不必要的。重要的部分是“刷新的输出路径”(正如@LazyOne在评论中指出的那样)。所以我想出的最好的解决方案,就是做一个什么都不做的bash脚本。看起来是这样的:
#!/bin/bash
sleep .01我管那叫“做什么”。我不需要为它工作做sleep .01,但它并没有阻止它的工作(基于我做过的20次上传测试)。在我看来,在保存scss-文件之后,最好是短时间延迟(因此PhpStorm中的gulp集成有时间完成style.css-文件的编译)。
下面是“我的文件监视程序”的设置:

该范围是自定义的,我已将其设置为:
file[PROJECTNAME]:wp-content/themes/THEME_NAME/assets/sass/*但我认为范围可能只是整个项目,因为它只是寻找SCSS-文件在该范围内的变化,在“程序”被执行之前(如果我已经正确地理解了整个文件监视系统)。
我正在做一个项目,SCSS-文件在
/wp-content/themes/THEME_NAME/assets/sass/STYLEDIRNAME/在这种情况下,应该将“要刷新的输出路径”设置为以下内容:
$FileDirRelativeToProjectRoot$/../../style.css或
$ProjectFileDir$/wp-content/themes/THEME_NAME/style.css如果您展开“其他选项”,则必须将Working directory设置为项目的根,这样它才能正常工作:
/Users/USERNAME/dropbox/foo/bar/这个解决方案的一个缺点是,如果PhpStorm比Gulp任务快,因为它会在Gulp-任务完成编译之前上传style.css-文件(因此上传旧的或不完整的文件)。在我20次简短的测试中没有发生过这种事。但是如果发生这种情况,我会在“donothing”文件中设置一个更高的延迟,看看它是否解决了问题。
加法1
我刚刚经历过,它没有工作-它没有上传style.css到每一个编译/保存(但我可以保证设置是正确的)。所以我重新启动了PhpStorm,然后就成功了。我试着先重新启动gulp watch-process,但这并没有什么区别。
发布于 2022-06-28 06:34:03
另一个简单得多的解决方案是将SCSS文件的文件监视范围设置为"All Changed Files“。
它编译.scss文件,将缩小后的.css复制到另一个文件夹,如果启用“自动上载”,则自动将两个文件上载到服务器。
(您可能会注意到,我使用的不是SCSS编译器,而是基于PHP的https://github.com/leafo/scssphp,它大约快70%,可以通过composer global require scssphp/scssphp__实现https://scssphp.github.io/scssphp/ )。
https://stackoverflow.com/questions/44139121
复制相似问题