SMELUKOV_DEV Telegram 14
📝 Изначально, это должна была быть небольшая заметка о том, как работает долгосрочное кеширование в webpack 5, но когда я ее писал, понял, что начинаю рассказывать о том, как устроена сборка и наводить порядок в терминологии, в которой многие путаются. "А почему бы и нет" - подумал я. Поэтому в этот раз поговорим про основные вещи, а в следующий раз уже про long term caching.

Упрощенно, сборка - это функция, на вход которой поступают одни файлы, а на выходе получаются другие. Но между файлами на входе и на выходе есть еще модули, точки входа, чанки и группы чанков. На самом деле, промежуточных стадий намного больше, но поговорим хотя бы об этих. Обо всем по-порядку...

Каждый файл, который используется в вашем проекте - это модуль (Module).

./a.js:

import foo from './b.js';

./b.js:

export default 123;

Используя друг-друга, модули образуют граф модулей (ModuleGraph)
Модули не существуют сами по себе, а объединяются в чанки (Chunk).
У каждого чанка есть соответствующий ему файл - ассет (Asset). Это есть выходные файлы - результат сборки.
Чанки, как и модули, образуют граф (ChunkGraph) т.к. связаны между собой через модули и тоже не существуют само по себе, а объединяются в группы (ChunkGroup).
Каждый раз, когда вы задаете точку входа в конфиге вебпака, вы создаете группу чанков с одним чанком. В этом чанке будут те модули, которые вы укажете как точку входа, это и будет отправной точкой:

./webpack.config.js:

module.exports = {
entry: './a.js'
};

Будет создана одна группа чанков с именем main (имя точки входа по умолчанию), которая будет состоять из одного чанка, в который будет входить один модуль ./a.js. По мере того, как парсер будет обрабатывать импорты внутри ./a.js в чанк будут добавляться новые модули.
Еще пример:

./webpack.config.js:

module.exports = {
entry: {
home: './home.js',
about: './about.js'
}
};

Будет создано две группы чанков с именами home и about соответственно.
В каждой из них будет по одному чанку с одним модулем - ./home.js и ./about.js
У каждого модуля и чанка есть свой уникальный идентификатор - это важно.
Если подытожить, то сборку можно представить себе так:

files -> modules -> chunks -> assets -> files

Это та база, которую необходимо знать и не путаться.

Чанков на группу может быть и больше одного, но об этом как-нибудь в другой раз, например, когда буду подробнее писать про оптимизацию сборки в webpack.

#webpack #webpack5



tgoop.com/smelukov_dev/14
Create:
Last Update:

📝 Изначально, это должна была быть небольшая заметка о том, как работает долгосрочное кеширование в webpack 5, но когда я ее писал, понял, что начинаю рассказывать о том, как устроена сборка и наводить порядок в терминологии, в которой многие путаются. "А почему бы и нет" - подумал я. Поэтому в этот раз поговорим про основные вещи, а в следующий раз уже про long term caching.

Упрощенно, сборка - это функция, на вход которой поступают одни файлы, а на выходе получаются другие. Но между файлами на входе и на выходе есть еще модули, точки входа, чанки и группы чанков. На самом деле, промежуточных стадий намного больше, но поговорим хотя бы об этих. Обо всем по-порядку...

Каждый файл, который используется в вашем проекте - это модуль (Module).

./a.js:

import foo from './b.js';

./b.js:

export default 123;

Используя друг-друга, модули образуют граф модулей (ModuleGraph)
Модули не существуют сами по себе, а объединяются в чанки (Chunk).
У каждого чанка есть соответствующий ему файл - ассет (Asset). Это есть выходные файлы - результат сборки.
Чанки, как и модули, образуют граф (ChunkGraph) т.к. связаны между собой через модули и тоже не существуют само по себе, а объединяются в группы (ChunkGroup).
Каждый раз, когда вы задаете точку входа в конфиге вебпака, вы создаете группу чанков с одним чанком. В этом чанке будут те модули, которые вы укажете как точку входа, это и будет отправной точкой:

./webpack.config.js:

module.exports = {
entry: './a.js'
};

Будет создана одна группа чанков с именем main (имя точки входа по умолчанию), которая будет состоять из одного чанка, в который будет входить один модуль ./a.js. По мере того, как парсер будет обрабатывать импорты внутри ./a.js в чанк будут добавляться новые модули.
Еще пример:

./webpack.config.js:

module.exports = {
entry: {
home: './home.js',
about: './about.js'
}
};

Будет создано две группы чанков с именами home и about соответственно.
В каждой из них будет по одному чанку с одним модулем - ./home.js и ./about.js
У каждого модуля и чанка есть свой уникальный идентификатор - это важно.
Если подытожить, то сборку можно представить себе так:

files -> modules -> chunks -> assets -> files

Это та база, которую необходимо знать и не путаться.

Чанков на группу может быть и больше одного, но об этом как-нибудь в другой раз, например, когда буду подробнее писать про оптимизацию сборки в webpack.

#webpack #webpack5

BY Сергей Мелюков


Share with your friend now:
tgoop.com/smelukov_dev/14

View MORE
Open in Telegram


Telegram News

Date: |

A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.” A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP. bank east asia october 20 kowloon When choosing the right name for your Telegram channel, use the language of your target audience. The name must sum up the essence of your channel in 1-3 words. If you’re planning to expand your Telegram audience, it makes sense to incorporate keywords into your name. A Telegram channel is used for various purposes, from sharing helpful content to implementing a business strategy. In addition, you can use your channel to build and improve your company image, boost your sales, make profits, enhance customer loyalty, and more.
from us


Telegram Сергей Мелюков
FROM American