Как исключить папку из build сборки проекта на Vue

Возникла задача при сборке production версии проекта не копировать в неё папку со статичными json файлами, которая используется только для отладки и подмены ряда ссылок в api при работе с локальным сервером.

Vue-cli позволяет внутри своей конфигурации изменять конфигурацию сборки webpack. Вопрос был решен следующим образом:

Как узнать конфигурацию webpack проекта на Vue.js

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

Для удобства работы с конфигурацией сразу её записываем в файл output.js, который потом удалим. Эта команда показывает конфигурацию для development сборки проекта, чтобы вывести production сборку добавляем к ней флаг:

Теперь в файле output.js будет находиться полная конфигурация webpack для обработки проекта на vue.

Поиском по названию папки public находим в конфигурации часть:

Видим, что это CopyWebpackPlugin, у которого есть параметр ignore. Теперь идём в vue.config.js, чтобы добавить нужную конфигурацию для этого плагина.

Не копируем папку в процессе сборки

Vue-cli позволяет выполнять продвинутую настройку webpack c помощью метода chainWebpack. Внутри него обернём изменение конфигурации в проверку NODE_ENV на соответствие production окружению, чтобы папка игнорировалась только в production сборке.

Добавляем следующий код:

Тестируем получившуюся конфигурацию с помощью:

И видим желаемые изменения:

При тестировании через npm run build убеждаемся, что действительно ни один из файлов внутри папки public/json не попадает внутрь сборки.