Угловой проект -> apache - css файл не находится в /dist

Во-первых, я "решил" это, отредактировав index.html и вручную скопировать соответствующий файл. Но то, как работает angular / node, действительно сбивает меня с толку, поэтому я прошу это выяснить, сделал ли я что-то не так или происходит что-то еще.

В любом случае, у меня есть этот дурацкий проект интернет-магазина (да, я посещаю занятия), и я хочу разместить его на своем веб-сервере Apache2.

Когда я выпускаю ng build --prod команда, в результате чего ./dist каталог, index.html файл, который генерирует ссылки

<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>

который, безусловно, существует в моем каталоге проекта - НО node_modules каталог и dist каталоги находятся на одном уровне (т. е. оба подкаталога .../ProjectName). Приложение отлично работает на локальном хосте через ng serve когда занимаюсь разработкой.

Итак... вопрос.

Я что-то упускаю из-за того, как я добавил загрузчик в мои зависимости? Ссылка на него, похоже, такая же, как и на все другие зависимости, которые включены и дают мне работоспособность.

Я build -не правильно проект? Я не получаю сообщение об ошибке...

Предложения, пожалуйста? Спасибо!

По запросу в комментариях мой .../src/index.html

И да, я вижу, где моя ссылка в индексе.
Так как мне ссылаться на этот файл, чтобы все необходимое оказалось в моем .../ProjectName/dist папка, когда я ng build --prod ?

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Ivan's Stuff for Sale</title>
        <base href="/">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" /> 
    </head>
    <body class="m-a-1">
    <app></app>
</body>
</html>

И мой ProjectName/.angular-cli.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "ivan-store"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "styles.css"
      ],
      "scripts": [],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "project": "src/tsconfig.app.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "src/tsconfig.spec.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "e2e/tsconfig.e2e.json",
      "exclude": "**/node_modules/**"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "component": {}
  }
}

1 ответ

Так как вы используете угловое cli для компиляции вашего проекта, вы захотите добавить свои статические файлы в конфигурацию cli. Существует массив для вставки ваших путей стилей для компиляции вашего CSS.

Пример моего.angular-cli.json. Обратите внимание на массив стилей. То же самое можно сделать для файлов JavaScript.

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "demo"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [
        "styles.css",
        "../node_modules/materialize-css/dist/css/materialize.min.css"
      ],
      "scripts": [
        "../node_modules/jquery/dist/jquery.min.js",
        "../node_modules/materialize-css/dist/js/materialize.min.js"
      ],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "staging": "environments/environment.staging.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "project": "src/tsconfig.app.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "src/tsconfig.spec.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "e2e/tsconfig.e2e.json",
      "exclude": "**/node_modules/**"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "component": {}
  }
}

Когда угловой CLI компилирует импортированные стили, они должны быть (они для меня) скомпилированы в единый пакет стилей, который вставляется в созданный его index.html. Тег стилей, который импортирует styles.a51a871499d3e6357e92.bundle.css, отсутствует в моей "не встроенной" версии index.html. Угловой компилятор добавил это. Единственные таблицы стилей, которые я загружаю вручную, - это CDN.

<!DOCTYPE html>
<html lang="en">
<head>
  <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <!-- Begin MailChimp Signup Form -->
  <link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css">
  <link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <link href="http://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <link href="https://cdn.bootcss.com/highlight.js/9.12.0/styles/agate.min.css" rel="stylesheet">
  <script src="https://cdn.bootcss.com/ace/1.2.8/ace.js"></script>
  <script src="https://cdn.bootcss.com/marked/0.3.6/marked.min.js"></script>
  <script src="https://cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js"></script>
  <meta charset="UTF-8">
  <base href="/">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <link rel="icon" type="image/x-icon" href="assets/imgs/logo-icon.png">
  <link href="styles.a51a871499d3e6357e92.bundle.css" rel="stylesheet"/>
</head>
<body>
<prehab-root></prehab-root>
<script type="text/javascript" src="inline.c27adf0de88b28299fdd.bundle.js"></script>
<script type="text/javascript" src="polyfills.6233469b59ce155cca70.bundle.js"></script>
<script type="text/javascript" src="scripts.8432b1e713993574ef2a.bundle.js"></script>
<script type="text/javascript" src="main.888a683b4d8b8b9b8553.bundle.js"></script>
</body>
</html>

введите описание изображения здесь

Другие вопросы по тегам