【问题标题】:How to make PhpStorm File Watcher also watch subfolders如何使 PhpStorm File Watcher 也监视子文件夹
【发布时间】:2021-10-09 09:42:35
【问题描述】:

我目前正在使用 YUI Compressor 在项目中压缩我的 CSS 文件,该项目运行良好,但由于插件文件有多个,我决定在我的 CSS 文件夹中使用子文件夹。如何使文件观察器也适用于子文件夹?我似乎找不到任何关于此的文档,也没有在网络上找到任何有同样问题的人。

我不介意整个项目范围内的所有 CSS 文件是否被缩小,但我想避免在每次创建新子文件夹时定义新的文件观察器。


PS:我在 Edit Watcher 屏幕中看到选中的“仅跟踪根文件”选项,但它是灰色的,所以我无法将其关闭。不知道为什么提供此选项,因为无论我尝试什么设置,它似乎总是呈灰色显示。

【问题讨论】:

    标签: css phpstorm yui-compressor file-watcher


    【解决方案1】:

    不确定我理解子文件夹的含义。使用默认范围(项目文件)监视项目中的所有 .css 文件(具有所有子文件夹的根文件夹,递归) - 为什么在添加文件夹时需要创建新的监视程序?您是否在观察者中使用了一些自定义范围?

    【讨论】:

    • 不,我没有使用任何自定义范围,只是默认值。我想让文件观察器在整个项目上工作,但“仅跟踪根文件”选项已打开并禁用,以便在我尝试的任何范围或设置中取消选中(灰色)。我认为这是我的问题,但我似乎找不到任何理由或 awnser 使此选项成为可选。讽刺的是……
    • 'Track only root files' 选项与观察者范围无关(如果使用 YUI 压缩器,它不会执行任何操作) - 范围设置为 'Project Files' 所选类型的所有文件被监视。你的意思是不是你项目中的所有 .css 文件都被处理了?
    • 谢谢莉娜,你让我更深入地了解范围选项并让我间接发现我的问题:) 我怎样才能在不标记 awnser 的情况下在这个网站上 1UP 你的帮助?
    【解决方案2】:

    找到了!

    “仅跟踪根文件”选项不是可选的不是(或至少不是全部)问题。这可以通过不使用默认的 YUI Compressor 文件观察器模板而是创建一个自定义来绕过。

    真正的问题是我的范围设置为项目文件(项目的根),但参数字符串设置为$FilePath$.css -o $FilePathWithoutAllExtensions$.min.css。这意味着观察者在项目根目录中搜索C:/[PROJECTPATH]/[SUBFOLDERS]/[FILENAME].css,然后将其输出到项目的根目录(-o $FileNameWithoutExtension$.min.css)。

    在对 Arguments 和 Insert Macro's 函数进行一些摆弄后,我创建了这个新的 Arguments 字符串:$FileDirRelativeToProjectRoot$\$FileNameWithoutAllExtensions$.css -o $FileDirRelativeToProjectRoot$\$FileNameWithoutAllExtensions$.min.css。它现在监视所有[FILENAME].css 文件并将缩小版本放在原始文件的同一文件夹中。

    使用Show console: Always 而不是Show console: Error 选项确实帮助我解决了这个问题,因为根据参数找不到要缩小的文件,显然是“不是错误”。

    希望这个解释能帮助遇到这个问题的每个人避免一些挫折和时间。

    【讨论】:

      【解决方案3】:

      我为此挣扎了一段时间,因为您总是必须应用设置,对 SCSS 文件进行一些更改并查看它是否正常工作。

      我的设置现在可以找到以下结构:

      // Source
      ./scss/
          - styles.scss
          - _variables.scss
          - subfolder/
            - more-styles.scss
      
      // Output
      ./css
          - styles.css
          - subfolder/
            - more-styles.css
      

      我的File Watcher 设置如下:

      // Program: 
      sass
      
      // Arguments: 
      ./$FileDirPathFromParent(scss)$$FileName$:../css/$FileDirPathFromParent(scss)$$FileNameWithoutExtension$.css
      
      // Output paths to refresh: 
      $FileNameWithoutExtension$.css:$FileNameWithoutExtension$.css.map
      
      // Working directory: 
      $Projectpath$/scss/
      

      其中一个关键是正确设置工作目录,例如$FileDir$只是SCSS文件所在,所以相对路径是错误的。

      【讨论】:

        猜你喜欢
        • 2018-09-14
        • 1970-01-01
        • 1970-01-01
        • 2018-03-31
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 2013-12-23
        • 2012-02-22
        相关资源
        最近更新 更多