Посылка: добавить хэш содержимого в html

#javascript #typescript #npm #build #parceljs

#javascript #typescript #npm #сборка #parceljs

Вопрос:

У меня есть три файла. loader.js создало бы iframe, который загружается, content.html который затем загружается content.js . Я публикую, loader.js чтобы другие люди могли включить это на свой сайт, а html и js содержимого являются внутренними.

Теперь я хочу добавить хэш содержимого в content.html и content.js таким образом, я могу добавить некоторую конфигурацию агрессивного кэша к этим файлам.

Когда я создаю html с помощью parcel build content.html , я получаю content.html и content.<hash>.js . Есть ли способ content.html также добавить хэш сборки, а также обновить loader.js , чтобы включить хэшированный content.html url?

РЕДАКТИРОВАТЬ: я думаю, я обнаружил, что это невозможно — есть открытая проблема https://github.com/parcel-bundler/parcel/issues/4498

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

1. Вот пример. github.com/daisy1754/parcel-load-iframe У меня есть три файла, loader.js , content.html и content.js . loader.js это единственный файл, которым я поделился с клиентом. Я хочу получить выходные данные сборки loader.js , content.hash.html и content.hash.js . В настоящее время content.html не хэшируется.

2. ^ @Грег, если ты можешь взглянуть, это было бы здорово

Ответ №1:

Никогда не работал с parcel, но в документации говорится:

Точки входа никогда не хэшируются

Таким образом, ваш content.html не будет хэширован, потому что это точка входа: parcel build content.html

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

1. возможно, мне следует перефразировать вопрос — можем ли мы сделать content.html не точка входа? он загружается через loader.js (с document.createElement(«iframe»)) итак, теоретически loader.js является ли точка входа

2. @Kazuki мне кажется, что нам нужно несколько примеров кода с вашей стороны. Но, возможно, другие люди помогут вам, если они столкнулись с такой же проблемой.

3. вот пример — смотрите мой комментарий выше для деталей github.com/daisy1754/parcel-load-iframe

Ответ №2:

Есть способ добавить это:

  • добавьте идентификатор к одному из ресурсов, например, к файлу css
  • в javascript извлеките href ссылки
  • соберите хэш с помощью регулярного выражения.
  • вводите хэш там, где это необходимо.

Пример:

     <link id="ui-styling" rel="stylesheet" type="text/css" href="styles/default/style.less">

    <script>
        var href = document.getElementById("ui-styling").getAttribute("href");
        var m = /.([^.] ).css$/.exec(href);
        var hash = m[1];
        
        // use or inject hash elsewhere ...
    </script>