如何在 Linux / macOS 上将 Sass 与 NetBeans 一起使用

Posted

技术标签:

【中文标题】如何在 Linux / macOS 上将 Sass 与 NetBeans 一起使用【英文标题】:How to use Sass with NetBeans on Linux / macOS 【发布时间】:2019-03-16 09:21:52 【问题描述】:

我曾经能够按照How to use SASS with Netbeans 8.0.1 上的最佳答案中的描述在 NetBeans 8 中安装和使用 Sass

现在,使用当前版本的 Sass (1.14.1),安装有所不同。基本上只需下载和解压缩。完成后,我已将 NetBeans 指向正确的位置。但是当前版本的 Sass 无法从 NetBeans 正确运行:

"/opt/dart-sass/sass" "--cache-location" 
"/home/jasper/.cache/netbeans/8.2/sass-compiler"
"path_to_my.scss" "path_to_my.css"
Could not find an option named "cache-location".

Sass output error in Netbeans 8.2 在他们使用 Windows 的地方也涵盖了此错误。

我尝试在sass文件的这一行添加缓存位置参数(类似于Windows的解决方案):

exec "$path/src/dart" --no-preview-dart-2 "-Dversion=1.14.1" "$path/src/sass.dart.snapshot" "$@"

但我无法让它工作(同样的错误不断出现)。

有人知道如何让 Sass 1.14.1 在 Linux (Ubuntu) 上从 NetBeans 8.2 运行吗?

【问题讨论】:

【参考方案1】:

问题是 --cache-location 不再受支持,应该被删除。 "$@" 使用所有原始参数。要删除前两个参数,您应该能够使用"$@:3"(请参阅Process all arguments except the first one (in a bash script)),但不知何故,这导致了我的“错误替换”错误。所以我选择使用shift 2 来删除它们:

#!/bin/sh
# Copyright 2016 Google Inc. Use of this source code is governed by an MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT.

# This script drives the standalone Sass package, which bundles together a Dart
# executable and a snapshot of Sass. It can be created with `pub run grinder
# package`.

follow_links() 
  file="$1"
  while [ -h "$file" ]; do
    # On Mac OS, readlink -f doesn't work.
    file="$(readlink "$file")"
  done
  echo "$file"


# Unlike $0, $BASH_SOURCE points to the absolute path of this file.
path=`dirname "$(follow_links "$0")"`
shift 2
exec "$path/src/dart" --no-preview-dart-2 "-Dversion=1.14.1" "$path/src/sass.dart.snapshot" "$@"

确保保留原始文件并创建一个仅用于 NetBeans 的副本并在此处进行更改。

macOS(自制)

如果您正在寻找 Dart Sass 安装位置(使用 Home Brew 安装后),它位于此处:

/usr/local/Cellar/sass/version/bin

macOS (node.js)

使用 node.js 时,会遇到"env: node: No such file or directory" 问题。

解决我创建的问题(确保将其设为可执行 (chmod a+x)):

/usr/local/lib/node_modules/sass/sass_nb.sh

并添加:

#!/bin/zsh

export PATH="$PATH:"/usr/local/bin/
shift 3
sass $@

NetBeans 11+

在 NetBeans 11 和 12 上,我必须使用 shift 3 而不是 shift 2

【讨论】:

遇到同样的问题。接受的答案中需要编辑的文件的名称是什么? @phaworth 查看我的详细答案。【参考方案2】:

我的回答主要基于 Jasper de Vries'one:

似乎 Netbeans 只是简单地添加了一些 sass 编译器不再支持的附加参数。

在我的例子中,Netbeans 发出的完整命令是:

"/home/alex/tools/dart-sass/sass" "--cache-location" "/home/alex/snap/netbeans/common/cache/12.0/sass-compiler" "--debug-info " "/home/alex/projects/alexgheorghiu.com/web/aaa.scss" "/home/alex/projects/alexgheorghiu.com/web/aaa.css"

所以前3个参数

"--cache-location" "/home/alex/snap/netbeans/common/cache/12.0/sass-compiler" "--debug-info"

必须“删除”或忽略。

因此您需要更改 sass 文件或复制它(最安全的方式) 并添加

shift 3

说明。

因此,如果您从原始版本开始,例如:

#!/bin/sh

# This script drives the standalone dart-sass package, which bundles together a
# Dart executable and a snapshot of dart-sass.

follow_links() 
  file="$1"
  while [ -h "$file" ]; do
    # On Mac OS, readlink -f doesn't work.
    file="$(readlink "$file")"
  done
  echo "$file"


# Unlike $0, $BASH_SOURCE points to the absolute path of this file.
path=`dirname "$(follow_links "$0")"`
exec "$path/src/dart" "$path/src/sass.snapshot" "$@"

你需要得到类似的结果:

#!/bin/sh

# This script drives the standalone dart-sass package, which bundles together a
# Dart executable and a snapshot of dart-sass.

follow_links() 
  file="$1"
  while [ -h "$file" ]; do
    # On Mac OS, readlink -f doesn't work.
    file="$(readlink "$file")"
  done
  echo "$file"


# Unlike $0, $BASH_SOURCE points to the absolute path of this file.
path=`dirname "$(follow_links "$0")"`
shift 3
exec "$path/src/dart" "$path/src/sass.snapshot" "$@"

一个有趣的方面是 Netbeans 开发人员知道这个错误(请参阅:Could not find an option named "cache-location")但我无法实现这一点,因为在我的 Xubuntu 18 下,Netbeans 是一个“快照”,因此它的 netbeans.conf 文件是只读。 但如果您可以修改该文件,它可能是一个更清洁的解决方案。

【讨论】:

以上是关于如何在 Linux / macOS 上将 Sass 与 NetBeans 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 macOS 上将 Git 升级到最新版本?

如何在macOS上将磁盘分为多个(非Apple)磁盘分区

如何在 MACOS 上将 Java 从 9 降级到 8。 Eclipse 未与 Java 9 一起运行

如何在 MacOS High Sierra 上将 X11 链接到 qt 项目

macOS Catalina 上的 Node-sass 无法正常工作。我应该如何解决这个问题?

在 MacOS 上将 Vapor 编译为独立应用程序