Angular将图像复制到其根文件夹

Angular将图像复制到其根文件夹,angular,Angular,我将我的资产图像保存在“assets/images/icons”文件夹下,在我的style.scss文件中,我有“background:url(assets/images/icons/searchbox\u magnifier.png)禁止重复”等规则但是,在制作产品构建时,Angular将所有这些文件放在其根文件夹中,并根据它更改style.scss规则,如“background:url(searchbox_magnifier.png)”,请参见所附图片 如何避免此问题?在文件中,请查找:

我将我的资产图像保存在“assets/images/icons”文件夹下,在我的style.scss文件中,我有“background:url(assets/images/icons/searchbox\u magnifier.png)禁止重复”等规则但是,在制作产品构建时,Angular将所有这些文件放在其根文件夹中,并根据它更改style.scss规则,如“background:url(searchbox_magnifier.png)”,请参见所附图片


如何避免此问题?

文件中,请查找:

"assets": [
   "assets",
   "favicon.ico"
]
作为默认设置

根据
/node\u modules/@angular/cli/lib/config/schema.json
,资产接受:

"assets": {
        "type": "array",
        "description": "List of application assets.",
        "items": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "properties": {
                "glob": {
                  "type": "string",
                  "default": "",
                  "description": "The pattern to match."
                },
                "input": {
                  "type": "string",
                  "default": "",
                  "description": "The dir to search within."
                },
                "output": {
                  "type": "string",
                  "default": "",
                  "description": "The output path (relative to the outDir)."
                },
                "allowOutsideOutDir": {
                  "type": "boolean",
                  "description": "Allow assets to be copied outside the outDir.",
                  "default": false
                }
              },
              "additionalProperties": false
            }
          ]
        },
因此,在您的情况下,请尝试更改为:

"assets": [
   ...
   {
      "glob": "**/*",
      "input": "./assets",
      "output": "assets/"
   }
 ]

或者你想让他们呆在哪里。

我也面临着同样的问题。如果在CSS文件中用作相对路径,则来自assets文件夹的图像将复制到dest build的根目录中

如果CSS中的路径是绝对路径,则不是。使用绝对路径解决了@angry beaver的问题,只是因为他的应用程序部署到了他的web服务器的根文件夹中


请注意,如果在构建中使用--base href,它会将其附加到CSS文件中的url。因此,如果每个目标都在另一个子文件夹中(例如,qa在根文件夹中,而生产在子文件夹中),则执行需要部署到不同目标(qa/pre-prod等)的生成时会遇到问题。

从中删除所有CSS文件 “风格”:[ “css的路径” ]

在angular.json文件中

在index.html中添加所有这些css文件引用


css中引用的图像,如果该css文件被捆绑,那么所有这些图像都会被复制到build文件夹。

我也遇到了同样的问题。只需将路径从相对更改为绝对即可解决此问题
例如,
背景图像:url(“../../../assets/images/background.svg”)


背景图像:url(“~src/assets/images/background.svg”)

替换为
背景图像:url(“/assets/images/background.svg”)


它将解决您的问题

您是否使用angular cli进行构建?是的,ng build--prod--AOT您使用的是哪个版本的cli?是否有angular.json文件或.angular cli文件?angular cli:1.7.3,并且在项目的根文件夹下还有.angular-cli.json文件。感谢您的帮助!我试图实现您的代码,但遇到了一个问题,我无法生成,因为控制台中有很多错误,然后我只是将css代码从url(assets/images/icons/searchbox\u magnifier.png)更改为url(“/assets/images/icons/searchbox\u magnifier.png”)现在,它按照预期进行了构建。我当时没做什么:)很高兴你解决了你的问题!