Webpack не запускает никаких скриптов, которые запускают ваш код, чтобы убедиться, что он работает.Он использует Babel, который является транспортером (который также не запускает ваш код).
Способ работы компиляторов состоит в том, что они сканируют ваш код и проверяют, что все синтаксически правильно, например, соответствующие скобки или фигурные скобки,была ли объявлена используемая вами переменная, а в статически типизированных языках - правильны ли ваши типы.В то время как / после этого они выкладывают код, который может использовать целевая система.В случае C компилятор берет ваш код C и превращает его в машинный код или сборку, в зависимости от указанных вами опций.
Разница между компилятором и транспортером, как правило, заключается в том, что компиляторы переводят кодвниз (по направлению к уровню машины) и транспортеры переводят код горизонтально.Подумайте Typescript -> Javascript или, в данном случае, ES6 + Javascript -> ES [совместимый] Javascript.Это означает, что для того, чтобы Babel преобразовал ваш код ES6 во что-то более совместимое, он должен прочитать все ваши файлы и выполнить базовые проверки целостности .В частности, если он увидит, что вы импортируете код, он попытается получить доступ к модулю / файлам, потому что это инструкция.Если этого не произойдет, то будет выдано сообщение об ошибке.
По этой же причине вы увидите ошибки компиляции, но не ошибки времени выполнения, как в других языках.Если Babel действительно запустит ваш код для проверки ошибок, он также может найти ошибки во время выполнения.Тем не менее, код имеет много ветвей выполнения, поэтому найти их, а затем установить условия для их выполнения - это грандиозная задача.Вот почему у нас есть инструменты тестирования.Для более непосредственного решения ваших вопросов / проблем:
Запускает ли сценарий, чтобы увидеть, работает ли он, виртуальную машину?
Нет
Или это так же просто, как запускать скрипт из другого скрипта?
Нет
Мне в основном непонятно, как такая программа, как webpack, анализирует файл .jsбез необходимости его выполнения, и возвращает конкретные ошибки с номерами строк.
Используется Babel и
Но это кажется не элегантным и неэффективным.
к сожалению, это в основном то, что делает Бабель.
Примечание Я дважды проверил документы Webpack и увидел, что у них есть свой собственный транспортер,но он обрабатывает только операторы импорта / экспорта и рекомендует использовать другой транспортер, такой как Babel или Bublé, для переноса остальных, что я имею в виду, когда имею в виду, как Webpack использует Babel.
См. с чего начать .