Почему copy webpack plugin добавляет **/* в конец пути?

Copy webpack plugin является плагином для инструмента сборки Webpack, который предоставляет возможность копирования файлов и директорий внутри проекта. Он очень полезен, когда необходимо скопировать файлы из одной директории в другую, например, для создания дополнительной структуры в выходном каталоге сборки или для создания копий файлов для разных сред, например, разработки или продакшена.

Но почему copy webpack plugin добавляет **/* в конец пути? Прежде чем ответить на этот вопрос, давайте разберемся с некоторыми концепциями, связанными с копированием файлов в Webpack.

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

Copy webpack plugin использует глобальные пути для указания исходных файлов и целевых путей скопированных файлов. Глобальные пути начинаются с корневого каталога проекта и включают все подкаталоги и их содержимое. Поэтому, когда мы указываем **/* в конце пути, мы указываем плагину скопировать все файлы и подкаталоги в указанной директории.

Например, если у нас есть следующая конфигурация плагина:

new CopyWebpackPlugin([
    {
        from: 'src/assets',
        to: 'assets'
    }
])

Здесь мы говорим плагину скопировать все файлы и подкаталоги внутри src/assets в каталог assets в выходной директории сборки. Когда плагин встречает **/* в конце пути src/assets/**/*, он сканирует все файлы и подкаталоги внутри src/assets и копирует их в assets.

Таким образом, **/* используется в конфигурации плагина Copy webpack plugin для сканирования и копирования всех файлов и подкаталогов в указанной директории. Это очень удобно, когда вам нужно скопировать большое количество файлов из разных директорий в сборку проекта.