Избегайте переименования JS переменных в HTML файлах на ParcelJS - PullRequest
3 голосов
/ 19 июня 2020

Я использую Parcel JS в качестве сборщика модулей, и по некоторым причинам я использую переменные JS в HTML, которые позже будут считаны кодом JS.

В моем HTML:

<script>
  var myVar = {
    key1: 'value1',
    key2: 'value2'
  };
</script>

В моем JS:

console.log(window.myVar.key1);

Когда я создаю сайт stati c с parcel build, переменная JS в HTML переименовывается, поэтому я больше не могу читать его из файла JS:

<script>var a = { key1: 'value1', key2: 'value2' };</script>

Согласно документам Parcel , похоже, что переименование (искажение) сделано htmlnano , который использует Terser под капотом для JS минификации.

Я пробовал использовать файл .htmlnanorc со следующим содержимым:

{
  "minifyJs": {
    "mangle": false
  },
  "removeComments": false
}

Я добавил опцию removeComments только для того, чтобы убедиться, что файл .htmlnanorc обрабатывается. HTML комментарии сохранены, так и есть.

Но переменная JS продолжает переименовываться, хотя я пробовал несколько конфигураций Terser в соответствии с их документами. Так что похоже, что htmlnano игнорирует любые конфигурации под ключом minifyJs.

Я что-то делаю не так? Или это может быть какая-то ошибка Parcel JS или htmlnano?

1 Ответ

3 голосов
/ 19 июня 2020

Измените имена переменных на

<script>
  window.myVar = {
    key1: 'value1',
    key2: 'value2'
  };
</script>

Нет возможности изменить это поведение с помощью parcel.js, поэтому вам нужно go через обходной путь.

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...