如何在 phpstorm 中使用指南针?

Posted

技术标签:

【中文标题】如何在 phpstorm 中使用指南针?【英文标题】:How to use compass in phpstorm? 【发布时间】:2013-03-26 06:36:32 【问题描述】:

我知道这个问题: How to add Compass syntax support to Jetbrains phpStorm? 但没用。

我只是选择将文件复制过来,这在我的项目中要容易得多。但是phpstorm仍然抱怨指南针。没有罗盘,它使用 ruby​​ 1.9.3 编译 scss 没有问题。我的设置正确吗?

编辑

这是针对 PhpStorm 6-

Compass is supported 在 PhpStorm 7+ 中

【问题讨论】:

查看相应票证中的cmets:youtrack.jetbrains.com/issue/WEB-5802#comment=27-471454 PHPStorm 7 刚刚增加了对 Compass jetbrains.com/phpstorm/whatsnew的支持 【参考方案1】:

首先,您链接的问题是关于启用对 Compass 样式导入的支持,这是一种不适用于每个项目的解决方法。

您的问题是关于另一件事:编译 Compass 项目

这两个问题都将在 PHPStorm 的第 7 版中解决,该版本不会很快发布:第 6 版刚刚发布。目前,有多种解决方法。

使用 PHPStorm 手动编译 Compass 项目

    转到 PHPStorm IDE 设置的 外部工具 部分。 创建一个外部工具。将其命名为“Compass 编译手册”或类似名称。 将程序设置为指向您的 Compass 二进制文件。在 Windows 上类似于 C:\Ruby193\bin\compass.bat,在 Linux 和 Mac 上可以简单地为 compass。但如果您使用的是 RVM,那么 Program 应该是 bash。 对于所有操作系统,Parameters 字段应为 compile,除非您使用的是 RVM。对于 RVM,Parameters 应设置为 –login -c "compass compile"工作目录字段应设置为$ProjectFileDir$

可以从工具菜单启动手动编译。您还可以分配一个热键以更快地运行它。确保热键不会与现有热键发生冲突。

在您保存更改时让 PHPStorm 编译您的项目

    确保您拥有最新的 PHPStorm 早期访问预览版。可以从here下载。 确保您已安装 File Watchers 插件。转到 PHPStorm IDE 设置的 Plugins 部分,查找 File Watchers。如果它不在列表中,请通过以下方式安装它 浏览存储库并重新启动 PHPStorm。 如果您还没有在 PHPStorm 中打开您的项目。 转到 PHPStorm 项目设置的 File Watchers 部分。 创建一个文件观察器。使用自定义模板。将您的观察者命名为“Compass compile on save”或类似名称。 将文件类型设置为 SCSS 或 SASS,具体取决于您在项目中使用哪一种。 将 Scope 保留为“项目文件” 将程序设置为指向您的 Compass 二进制文件。在 Windows 上类似于 C:\Ruby193\bin\compass.bat,在 Linux 和 Mac 上可以简单地为 compass。但如果您使用的是 RVM,那么 Program 应该是 bash。 对于所有操作系统,Arguments 字段应为 compile,除非您使用的是 RVM。对于 RVM,Arguments 应设置为 –login -c "compass compile"UPD: @ezekiel-victor 建议为:–login -c "compile --sass-dir=$ProjectFileDir$ --css-dir=$ProjectFileDir$"工作目录字段应设置为$ProjectFileDir$。 禁用Check for syntax errors。 将其余部分留空并保存。

现在,每当您保存对任何 SCSS 或 SASS 文件的更改时,PHPStorm 都会告诉 Compass 编译项目。

UPD 如果您使用的是 Bundler(您的项目中有 Gemfile 并且您使用 bundle install 来获取依赖项),您应该使用 bundle exec compass compile 而不是 compass compile。这意味着您必须使用bundle 可执行文件(Windows 上为bundle.bat)而不是compasscompass.bat)并相应地调整Arguments 字段。

在操作系统控制台中手动运行compass watch(推荐)

运行compass compile的问题在于它每次执行都会重新编译整个项目,因此速度很慢。

相反,您可以使用操作系统控制台在项目文件夹中手动运行compass watch 命令。 Compass Watch 将持续监控您的项目的变化。当发现有变化时,它只会重新编译修改过的部分,速度要快得多。

Compass Watch 足够智能,不会监控项目中的每个文件。它只监视由任何非部分文件或递归导入的部分导入的非部分文件(例如screen.scss)和部分文件(例如_layout.scss)。

如果您通过网络文件系统处理项目(例如,使用虚拟机或开发服务器运行代码时),编译和跟踪更改会变得太慢。因此,使用远程/虚拟机时的最佳选择是在该机器上运行compass watch,以便它在本地而不是通过网络文件系统跟踪更改。

重新激活指南针

Compass 缓存它自己的工作以加快编译速度。有时缓存与项目内容不一致。这会导致 Compass 报告各种奇怪的错误并拒绝编译您的项目。

一旦你觉得 Compass 报错不真实,执行compass clean 并重新编译你的项目。清理将清除 Compass 缓存和编译文件,使其从头开始。

您可以在控制台中手动运行compass clean 或将其添加为 PHPStorm 外部工具。

【讨论】:

我无法按原样完成这项工作。我没有 rvm(假设它意味着 Ruby 版本管理器),但我的 OS X 机器上确实有 rbenv。在第 8 步中,我将 Program 设置为 bash。在第 9 步中,我将 Arguments 设置为 compass compile 和我的项目的路径。它适用于这些设置。我看到 PHPStorm 的第 7 版刚刚发布。我期待着 GA。 我给了你一个赞成票,但请考虑更新你的答案。我必须进行以下更改才能使文件观察器在 PHPStorm 中工作:1)更改参数以使 dirs 显式:“compile --sass-dir=$ProjectFileDir$ --css-dir=$ProjectFileDir$”,2)空白“输出路径”。 @EzekielVictor,我从来没有使用过这个,所以感谢您关注它。我已将您的 #1 建议添加到答案中。我没有添加#2,因为已经有“将其他字段留空”的建议。我还添加了一段关于使用 Bundler 的内容。【参考方案2】:

如果对任何人有帮助 - 在雪豹上,指南针安装在以下目录中(显然路径中的版本号取决于安装的版本):

/Library/Ruby/Gems/1.8/gems/compass-0.12.2/bin/compass

所以对于 Program: 选项,您可以在那里选择它。

【讨论】:

你是对的。如果您不指定此目录,PhpStorm 将找不到指南针库以将其包含在您的项目中。这个问题在这里描述:youtrack.jetbrains.com/issue/WEB-9139【参考方案3】:

请在 JetBrains 问题跟踪器上查看相应票证(支持 Compass)中的 cmets:即使在当前版本的 IDE 中,也很少有 cmets 有关于如何使其工作的说明:

http://youtrack.jetbrains.com/issue/WEB-5802#comment=27-471454

【讨论】:

【参考方案4】:

我正在使用 PhpStorm 2017.1.4

在 PhpStorm 中设置 Ruby 路径变量并启用指南针对我来说不起作用。

我无法使用项目目录中的 compass(“无法运行 Compass”),因为终端无法使用 Ruby 安装目录中的可执行文件解析命令 compass。

因此,我在 explanation 之后永久设置了一个 windows(使用 win10)环境变量。

快速解释:

假设你已经安装了 ruby​​ 和 compass。

转至:Control Panel -> System -> Advanced System Settings -> Environment Variables...

C:\Ruby22\bin 添加到您的PATH 变量中

重启 PhpStorm

进一步的建议:

如果您从其他系统导入项目,删除 config.rb 文件并从项目根目录运行 compass init 可能会有所帮助。

【讨论】:

以上是关于如何在 phpstorm 中使用指南针?的主要内容,如果未能解决你的问题,请参考以下文章

PhpStorm - 按需 xDebug 未附加

如何在 PhpStorm 集成终端中逐字移动光标?

如何使用 PhpStorm 将选择包含在引号中?

phpstorm如何从桌面拖入插件

如何在 PhpStorm 中使用 IdeaVim 映射 <Action>?

如何在 PhpStorm 中更新支持的 PHP 语言级别?