Aurelia CLI - 从 node_modules 导入 less 文件到 master less 文件

Aurelia CLI - Import less file from node_modules to master less file

安装包:

npm install font-awesome --save

更新aurelia.json:

{
    "name": "font-awesome",
    "main":"",
    "path": "../node_modules/font-awesome",
    "resources": [
        "css/font-awesome.css",
        "/fonts/fontawesome-webfont.woff2",
        "/fonts/FontAwesome.otf",
        "/fonts/fontawesome-webfont.eot",
        "/fonts/fontawesome-webfont.svg",
        "/fonts/fontawesome-webfont.ttf"
    ]
}

使用 require 标签在 html 页面中导入样式:

<require from="font-awesome/css/font-awesome.css"></require>

没有错误 - 按预期工作

使用 less 和 aurelia.config 路径导入样式(不工作)

@import (less) "font-awesome/css/font-awesome.css";

错误:未找到 - 在 master less 文件中使用 import less 时找不到文件。

使用更少和完整的 node_modules 路径导入样式(有效)

@import (less) "node_modules/font-awesome/css/font-awesome.css";

没有错误 - 按预期工作

  1. 为什么import less 找不到我的文件?

  2. 使用 css 文件的完整路径时工作正常,但我读到你应该避免使用完整路径,对吗?这是为什么?

  3. 也许我应该在我的 aurelia.json 配置中包含 .less?

  4. 如果我使用完整的 node_modules 路径并发布我的项目,加载库会有任何问题吗?

当您更新 aurelia.json 文件时,您基本上是在说 "name": "font-awesome""path": "../node_modules/font-awesome" 中,所以 <require from="font-awesome/css/font-awesome.css"></require> 之所以有效,是因为 Aurelia 知道 font-awesome 的放置位置(就像别名一样)。

但是,使用 @import (less) "font-awesome/css/font-awesome.css"; 时,您找不到文件,因为 less 不知道别名。

@import (less) "node_modules/font-awesome/css/font-awesome.css"; 有效,因为这是放置 font-awesome 的真实路径。

  1. 实际上,node_modules/font-awesome/css/font-awesome.css是相对于你当前位置的,完整路径示例是/var/www/project/node_modules/..,这很糟糕,因为当你将项目移动到另一个地方时,这个路径可能是错的。

  2. 不需要。

  3. 没问题,less 将复制 font-awesome.css 文件中的内容(这就是 import 所做的)。

希望对您有所帮助。