HTML как точка входа в Webpack

#webpack #gulp

#webpack #gulp

Вопрос:

Прежде всего, я совершенно новичок в веб-разработке, поэтому, если мой подход абсолютно неверен, просто скажите об этом.

Я хочу автоматизировать сборку файлов sass и ts, поэтому я прочитал о Gulp / Webpack, и, похоже, webpack — это правильный путь.

Я создаю простой одностраничный веб-сайт, и на данный момент у меня есть только небольшой необходимый javascript, поэтому, на мой взгляд, имеет смысл, что точкой входа для webpack должен быть сам HTML-файл. Однако во всех документах и руководствах говорится только о запуске с .js .

Есть ли способ начать с HTML и разрешить js, css, изображения и другие необходимые вещи?

Должен ли я просто отказаться от использования webpack и просто использовать gulp для компиляции typescript и sass?

Комментарии:

1. Вы нацелены на использование веб-фреймворка или на данном этапе просто ванильного JavaScript, CSS и т.д.? Фреймворки (например, Angular) иногда поставляются со встроенной поддержкой webpack.

2. Кроме того, какую конкретную проблему вы пытаетесь решить с помощью webpack?

3. В основном автоматизирует процессы сборки, такие как компиляция typescript и sass, минимизация изображений и тому подобное. Gulp делает это, но webpack делает это и многое другое, поэтому я подумал, что это может быть лучшим инструментом для изучения

Ответ №1:

Одной из альтернатив было бы использовать Parcel, который поддерживает использование HTML-файла в качестве записи.

Ответ №2:

Если у вас нет содержимого в html-файле, и вам нужны только css-файлы, assets … и т.д. Вы можете создать папку с именем ‘src’ и index.js файл в нем, затем импортируйте эти файлы, например:

 import "../style.css";
import "../assets/img1.jpg";
  

это должно выполнить свою работу.

Но если у вас есть содержимое в index.html тогда создание html-тегов через js с литералами шаблона, document.body.innerHTML и document.head.innerHTML было бы самым простым решением, которое я мог придумать

 const headContent = `
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Webpack Version</title>
<link rel="stylesheet" href="../css/index.css">
<script src="../js/index.js" defer></script>
`;

const bodyContent = `
    <ul>
        <li>Astronauts</li>
        <li>Rockets</li>
        <li>Metoers</li>
        <li>Dishes</li>
        <li>Satellites</li>
    </ul>
    <img src="../images/logo.jpg">
    <!-- and so on -->
`;

document.body.innerHTML = bodyContent;
document.head.innerHTML = headContent;
  

Ответ №3:

Строго говоря, вы не можете делать то, что просите, для всего вашего приложения

[использовать] HTML как точку входа в Webpack

Файлы HTML не могут ссылаться на локальные файлы на вашем жестком диске (существуют системы шаблонов, но это другое дело). Файлы HTML обслуживаются сервером и могут ссылаться только на удаленные файлы.

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

Что вы можете сделать, так это:

  • используйте HTML в качестве точки входа в Webpack для других ваших HTML-файлов, если вы используете библиотеку шаблонов или импортируете HTML
  • используйте JS-файл в качестве точки входа в Webpack (обычно index.js ) для всех ваших файлов JS
  • затем оба вывода помещаются в dist папку, и вывод HTML будет ссылаться на ваш вывод JS, но не с относительным или абсолютным путем (диск), это будет сделано с помощью удаленного поиска ресурсов. Стандартом для них является унифицированный указатель ресурсов, URL (относительный URL). Прошу прощения за чрезмерно подробное (педантичное) описание, я просто хочу как можно яснее объяснить причины, стоящие за всем этим.

Однако во всех документах и руководствах говорится только о запуске с .js.

Для простого веб-сайта, такого как одностраничный сайт, обычно HTML вообще не проходит никакой предварительной обработки. И единственное действие, предпринимаемое на этапе сборки, — это переместить файл из src в dist , вот почему учебные пособия, как правило, сосредоточены на стороне JS.

Судя по описанию вашего проекта, вам, похоже, стоит начать экспериментировать с html-загрузчиком, который поддерживает общие функции, такие как сокращение, разрешение путей к изображениям и т.д.