文件监视程序:“编译目录时必须指定输出目录”

时间:2019-07-18 21:44:58

标签: webstorm jetbrains-ide node-sass file-watcher

  

cmd.exe / D / C调用C:\ Users \ sebas \ AppData \ Roaming \ npm \ node-sass.cmd style.scss:style.css   编译目录时必须指定输出目录

enter image description here

我希望文件监视程序监视的scss文件放在我项目的根目录下。

观看错误出现:gif_link

如何解决此错误?

4 个答案:

答案 0 :(得分:1)

如果您希望.css文件与原始文件在同一文件夹中生成,请尝试以下设置:

enter image description here

请注意从stdout创建输出文件选项-必须启用该文件,因为除非通过-o选项,否则 node-sass 将CSS写入stdout。

如果要将生成的文件放在单独的文件夹中,请使用-o选项:

enter image description here

答案 1 :(得分:0)

  

虽然我认为@lena答案没有错,但我想向(Compress)添加一些信息,以将 node-sass 输出最小化为一个具有不同名称并最终位于不同名称的文件目录。

     

看来node-sass page上的文档并不完全准确。选项并不总是位于输入文件名之前。例如,必须在输出定义之后放置选项--output-style。看起来像任何以--o-o开头的选项,在输入文件名之前都会产生问题中描述的错误。

     

另一方面,默认情况下 node-sass 会在源目录中生成编译的文件,除非使用-o选项修改目标目录(请在{ {3}})。

     

该选项(-o, --output Output directory)仅用于更改目标目录,而不用于更改文件名,通常不希望这样做,因此不应将其包含在参数中。默认情况下,它是具有扩展名-o的相同源文件名。

     

现在,要同时修改输出文件名和最终的目标目录,请不要使用 node-sass css选项并检查(启用)PhpStorm / WebStorm 创建输出如@Lena回答第一张图片中所述,从stdout 选项中选择文件。

示例:
要在父目录中获取以 .min.css 结尾的COMPRESSED(最小化)输出文件,监视程序的“ Arguments”字段应包含:
$ FileName $ $ FileParentDir $ / $ FileNameWithoutExtension $ .min.css-输出样式已压缩

如果父目录是 CSS ,而源文件是任何子目录下的 example.scss ,则编译器将生成 example.min.css < / strong>在 CSS 目录中。

这是使用监视程序宏的示例,但是您可以根据需要更改目录和文件名。

答案 2 :(得分:0)

对我来说,使用node-sass可以将参数设置为 $FileName$ -o . $FileNameWithoutExtension$.css

并取消选中“从stdout创建输出文件”。

答案 3 :(得分:0)

使用webpack捆绑器并在package.json中设置脚本时遇到了相同的错误

就我而言,要解决此问题,您需要添加输出目录(-o name-of-directory)。

如果使用package.json中的脚本,它应该看起来像这样:

scripts: {
    "scss": "node-sass --watch src -o src"
}

src是放置要编译的sass文件的文件夹。

这意味着从src文件夹编译sass并将已编译的文件发送到src文件夹。

在这种情况下,css文件将放置在已经存在sass文件的位置。