Libsass: 功能请求::添加一个标志来关闭 DEPRECATION WARNS

创建于 2019-01-31  ·  10评论  ·  资料来源: sass/libsass

node-sass的 4.9 版本开始,当前的警告显示在很多项目中。 (您可能会看到一个悬而未决的问题,要求在此处消除警告

DEPRECATION WARNING: Passing a string to call() is deprecated and will be illegal
in Sass 4.0. Use call(get-function("variable-exists")) instead.

警告没问题,我很想修复我所有弃用的函数调用,但我不能,主要原因是我什至不知道哪个库是有问题的......(不是我的代码)我理解强制每个人更新他们已弃用的内容的必要性,但这是不可行的。 我认为每个开发人员都对自己的应用程序负责,承担过时的风险是他们自己的,我承担责任:)

所以......这个功能请求是以某种方式添加一个可以打开/关闭DEPRECATION WARNINGS的标志

我已经错误地尝试在 node-sass 项目中添加一个环境变量,但是@nschonni告诉我应该在libsass此处完成 PR,但是@xzyfer告诉我可以接受的解决方案是沉默弃用警告是修复已弃用的代码,甚至认为该代码属于别人的一个库。

  • 您可以从node-sass项目的PR-2587 中看到添加标志的代码已经可用,并不多。
  • 此外,关于此事的未决问题是

所有10条评论

我想我有一个更标准的解决方案,你们对实现日志级别有什么看法?? (如 log4j、 winston等)。

请告诉我你是否更同意这一点:)(所以我会修改这个 FR 标题)

我们不会添加日志记录级别,也不会启用静默弃用警告。 这些警告对于用户代码继续工作至关重要。

然而,我们会考虑使用不推荐使用的行为更容易找到代码的解决方案。

感谢您回答我对这个@xzyfer 的所有担忧......顺便说一句,我发现了有问题的图书馆,因此正在为我进行修复:+1:

所以......我想其他人都需要等到图书馆所有者决定修复他们不推荐使用的东西(......)

请记住,这些警告对于我们作为开发人员的继续工作并不重要……如果它们是那样的话,将抛出错误而不是警告。

另一种方法可能是https://github.com/sass/libsass/pull/2862 ...

这真的很重要。 我目前收到数十个相同的错误。

DEPRECATION WARNING on line 29 of sass/elements/image.sass:
#{} interpolation near operators will be simplified in a future version of Sass.
To preserve the current behavior, use quotes:

  unquote("image_size_#{$size}")

像这样的东西

+_(image_size_#{$size})

我什至不确定它指的是什么运算符,但是当它出现时,我宁愿更改为“简化版本”,也不愿编写看起来很糟糕的替代方案。

这些警告对于用户代码继续工作至关重要。

是的,我同意@xzyfer ,但我已经阅读了这些警告,我想暂时将它们放在一边并专注于其他事情,但我不能,因为这些警告填满了整个终端

目前无意支持这一点。 弃用警告对于我们发展语言至关重要。 静音弃用警告只是推迟引入破坏性更改时的痛苦,我们的问题跟踪器将享受淹没。 删除警告降级到引入警告之前的 Libsass 版本。

警告仅在您第一次阅读时有用。 如果有人关闭它们是因为他们已经阅读了它们并且厌倦了它们因此意识到它们,再次展示它不会产生零差异,并且将来他们会知道为什么它会破裂。
不让人们压制这些警告对任何人都没有帮助,只是令人讨厌。

此外,警告是关于它将如何变得更加简化以及它提供的解决方案使其变得更加复杂。
你会明白为什么有人不想遵循那个建议,特别是当我在我的项目中使用它时

@xzyfer

静音弃用警告只是推迟引入破坏性更改时的痛苦,我们的问题跟踪器将享受淹没

但是我认为我们仍然可以找到解决方案!! 对于大多数抱怨这个的开发人员。 主要原因是这部分(正如@luaVolk所说):

我目前收到数十个相同的错误。

您如何将所有这些警告减少到一个? 就我而言,当我打开此功能请求时,我收到了大约 100k+ 条警告。 我认为您可以删除所有“详细警告”并打印:

Your libsass implementation is deprecated and will be illegal in Sass 4.0, for more details try '--libsass-verbose'.

也许添加:

The following errors were found:
> 12 errors found: #{} interpolation near operators will be simplified in a future version of Sass
> 4 errors found: Passing a string to call() is deprecated and will be illegal
in Sass 4.0. Use call(get-function("variable-exists")) instead.

或者类似的东西......我希望你明白,你怎么看@xzyfer?

我想我的最后一条评论值得作为不同的功能请求进行管理(?)

此页面是否有帮助?
0 / 5 - 0 等级