Less.js: node_modules 中需要扩展

创建于 2017-10-12  ·  23评论  ·  资料来源: less/less.js

我今天一直在尝试复制一个问题,最后我通过在node_modules目录中进行黑客攻击来获得一些东西。

基本上,包括一个没有扩展名的 LESS 文件是有效的,我们知道这一点......但是......包括没有来自node_modules目录的扩展名失败。

我创建了一个简单的 repo 来演示以下内容: https :

<strong i="11">@import</strong> './one/two/three/four/test';有效

同样: <strong i="14">@import</strong> 'thisisinnodemodules/one/two/three/four/test.less';
(请注意,这包括来自 node_modules 的扩展名)

然而:

<strong i="19">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
(请注意,包括来自没有扩展名的 node_modules)

不起作用并产生以下错误:

$ npm run buildStyles

> [email protected] buildStyles /Users/robert.huzzey/Sites/test/lessissue
> lessc styles.less styles.css

FileError: 'thisisinnodemodules/one/two/three/four/test' wasn't found. Tried - /Users/robert.huzzey/Sites/test/lessissue/thisisinnodemodules/one/two/three/four/test.less,/Users/robert.huzzey/Sites/test/lessissue/thisisinnodemodules/one/two/three/four/test.less,/Users/robert.huzzey/Sites/test/lessissue/node_modules/thisisinnodemodules/one/two/three/four/test,thisisinnodemodules/one/two/three/four/test.less in /Users/robert.huzzey/Sites/test/lessissue/styles.less on line 5, column 1:
4 // This does NOT work
5 <strong i="24">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
6 

我做了几个分支来表明这似乎是v3的问题,但不是v2 ......任何人都可以确认这是预期的还是不受欢迎的行为(我似乎无法在线查找有关此内容的任何信息)。

bug high priority

所有23条评论

今天也遇到了这个问题。

我也确认了这个问题。 您可以在此 repo 上克隆并运行 npm run dev 来重现它:

https://github.com/acacha/AdminLTETinkerLaravelMix

考虑到这可能是 webpack 问题,因为使用 lessc 命令没有问题。

@acacha我确实有同样的想法,但我已经证明并非如此……如果您看到我在提出的问题中创建的存储库……您可以看到它没有使用 webpack,我们仍然有这个问题:

我确实在较少的源代码中进行了挖掘,这看起来很可能是开始测试一些东西的地方:

https://github.com/less/less.js/blob/55380d49e96a6ed561cac4d13a774830aa3c17a3/lib/less-node/file-manager.js#L79 -L87

我不愿意开始挖掘或制作 PR,直到我知道这不是预期的行为……如果 Less 的维护者之一可以确认……我很乐意调查修复。

@robhuzzey.less就不会导入,这不是预期的行为。 绝对是 3.0 alpha 3 中的一个错误。感谢您的调查。

@matthew-dean 我似乎已经通过这项工作修复了它: https :

所有测试都通过此更改...我很高兴提交 PR 以供审查/建议?

@robhuzzey您需要在package.json添加一个.less NPM devDependency,然后添加一个测试(在/tests/less )以从模块(可能是import-module.less文件?)添加测试后,我会验证它在没有修复的情况下会中断,以确保测试正常工作。

谢谢@matthew-dean 我确实在修复之前验证了当前的测试是否中断......我挣扎的是所有测试都被命名为.less

我想下一个挑战是让它包含来自node_modules

@robhuzzey你还有时间看看https://github.com/less/less.js/issues/3116吗? 如果你不这样做就好了。

@matthew-dean 当然......很乐意帮忙。

我在这里为我的分支做了一个测试: https :

如果您能指出我做错了什么,我将不胜感激:)

抱歉@matthew-dean 我现在在国外工作,所以现在在不同的时区......如果你能告诉我如何为这个库编写测试,很高兴看到你遇到的问题? 我定期尝试过几次,但感觉这可能是显而易见的事情,您可以轻松地告诉我:)

@robhuzzey我不熟悉 NPM 中的file:语法,但除此之外,在我看来它确实应该正确运行。 您唯一需要做的另一件事是在test/css放置一个import-module.css test/css ,然后将其用作具有预期输出的比较文件,以便测试可以验证它是否正常工作。 当您运行grunt quicktest ,您可能需要调整输出 CSS 中的次要内容,例如换行符或缩进,以匹配 Less 输出。 您甚至可以为第一次测试创建一个空文件,然后将预期的输出复制/粘贴到控制台日志中。 只要它从省略了.less模块中输出规则集,这就是重要的事情。 我实际上会混合您的测试,以便一些(或一个)与.less一起导入,而有些则没有,以便进行更强大的测试。

@matthew-dean 谢谢...最后太简单了...只需要CSS来比较!

我以前也不知道 NPM 中的file://语法......但现在我意识到这是一个很好的用例,而不是仅仅为了测试而制作一个实际的 NPM 包:​​)

我现在已经做了公关: https :

谢谢。

此问题已通过以下方式解决: https :

@robhuzzey关于此修复程序何时发布新 Alpha 的任何时间表? 当我尝试覆盖外部库中的变量时,这当前破坏了我的 webpack 构建。

@stefan-schweiger 我将尝试在今晚或明晚发布此内容。

如果有人有兴趣参与为 Less repo 发布,请务必在此处或在 Twitter 上联系我 @matthewdeaners。

@stefan-schweiger 抱歉,刚刚才看到这个。 我没有像 Matthew Dean 那样发布的能力(老实说,这是我对 Less 的第一个贡献)。

@matthew-dean 正如你可能会说的,我现在很忙,但我有一些预定的“停机时间”即将到来,所以如果可以的话我会回来找你吗? (我只是无法为我现在正在做的事情添加更多内容)。

感谢 @matthew-dean 修复https://github.com/less/less.js/issues/3123 ,这就是我什至在发布版本中遇到此错误的原因。 所以不要担心@robhuzzey在修复之前通过手动降级来解决这个问题。

这个问题在 3.0.1 版本中仍然存在。
我手动降级到 2.7.3 版以解决该问题。

@allentcm这没有意义。 Less 2.7.3 根本不从 node_modules 文件夹导入。

@matthew-dean @allentcm降级到 2.7.3 也对我

@matthew-dean @allentcm @babsonmatt降级到 2.7.3 也对我有用👍

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