Video není dostupné.
Omlouváme se.

Webpack. Full Course 2020

Sdílet
Vložit
  • čas přidán 17. 08. 2024
  • Webpack. Full Course 2020
    After this video you will learn how to create builds for any projects.
    Why course is almost 3 hours? I will tell you about everything in details: babel, typescript, eslint, sass, less, react jsx, hmr, dev server, fonts, images, xml, csv. I will tell you about app optimization with different builds, resolving issue with cache, configuring Webpack for different environments, bundle analyze and best practices
    After this video you will no longer have any questions about how frontend is working
    Telegram: teleg.one/js_b...
    Instagram: / vladilen.minin
    VK: vladile...
    Udemy Angular 9:
    clc.to/angular
    Udemy React Native:
    clc.to/rnative
    Udemy ReactJS:
    clc.to/react
    Source code in telegram channel:
    teleg.one/js_b...
    Support new videos:
    Yandex Money: money.yandex.r...
    PayPal: www.paypal.me/...
    Webpack. Full Course 2020
    #webpack #js #javascript

Komentáře • 1,6K

  • @VladilenMinin
    @VladilenMinin  Před rokem +9

    Исходники тут: t.me/js_by_vladilen/125
    Эксклюзивный контент на моем Boosty: boosty.to/vladilen

    • @sepulz
      @sepulz Před rokem +1

      Лучший гайд!!! Ждём обновления под версию 5.

  • @VladilenMinin
    @VladilenMinin  Před 4 lety +643

    Долго выбирал материал для этого ролика и постарался в нем учесть все ваши пожелания :)
    Приятного обучения и просмотра!

    • @andriikostenko2379
      @andriikostenko2379 Před 4 lety +5

      Большое спасибо за курс! То, что сейчас нужно.

    • @user-jp5zq8it9j
      @user-jp5zq8it9j Před 4 lety +1

      Владилен, огромное спасибо!!! А вы могли бы добавить таймкоды?

    • @FDenni
      @FDenni Před 4 lety +2

      Большое спасибо! Надеюсь всё же дождусь курс от тебя по NgRx и ещё что-нибудь по Angular)))

    • @user-lb9kz8wb7h
      @user-lb9kz8wb7h Před 4 lety

      как обычно, красавчик просто) спасибо огромное). Лайк поставил, к просмотру позже, не успеваю за твоим контентом)

    • @FDenni
      @FDenni Před 4 lety

      @@user-fx3of4zx6s Спасибо! Сейчас гляну)

  • @AugusteEden
    @AugusteEden Před 4 lety +233

    У кого возникает проблема с CopyWebpackPlugin - там теперь в plugins нужно писать немного иначе:
    new CopyWebpackPlugin({
    patterns: [
    {
    from: path.resolve(__dirname, 'src/favicon.ico'),
    to: path.resolve(__dirname, 'dist')
    }
    ]
    })

    • @darklightning2624
      @darklightning2624 Před 4 lety +3

      Спасибо тебе, добрый человек

    • @technobydlo6093
      @technobydlo6093 Před 3 lety +6

      Как же подгорает от вебпак мира! Не успел добраться до годного курса, как уже что-то в синтаксисе поменялось.

    • @kostasancez2358
      @kostasancez2358 Před 3 lety

      @@technobydlo6093 по этому документация лучше любых курсов

    • @vanunsakanyan2188
      @vanunsakanyan2188 Před 3 lety

      спосибо

    • @annagardt2360
      @annagardt2360 Před 3 lety

      Спасибо! Ваш комментарий очень помог!

  • @user-ph1vu6ou6c
    @user-ph1vu6ou6c Před 3 lety +183

    Проблема с дублированием файлов (png, fonts).
    Вместо use: 'file-loader' используйте type: 'asset/resource' - это нововведение (относительное) Webpack, которое помогает избежать данной ошибки. Подробнее можно узнать в документации Webpack в разделе asset-modules, там все кристально объяснено.

    • @user-gu2lf6tr8m
      @user-gu2lf6tr8m Před 3 lety +8

      по делу коммент, помог

    • @nikitakhilioti
      @nikitakhilioti Před 2 lety +4

      Супер, спасибо помог!

    • @user-gc2ez7zb1f
      @user-gc2ez7zb1f Před 2 lety +2

      Святой человек, помог!

    • @strange_man317
      @strange_man317 Před 2 lety +11

      @@user-gc2ez7zb1f На небе есть отдельное облако для тех, кто кидает годноту в комментах)))

    • @user-gc2ez7zb1f
      @user-gc2ez7zb1f Před 2 lety +5

      @@strange_man317 места рядом с типами со стек оверфлоу

  • @jimlabable
    @jimlabable Před 4 lety +135

    Это мой третий подход к Webpack - у ! Оказывается он совсем не такой страшный! Владилен у тебя талант делать сложные вещи простыми!

    • @oleglego8673
      @oleglego8673 Před 2 lety +2

      он вновь становится страшным после каждого braking changes обновления...

    • @senails2859
      @senails2859 Před 2 lety +1

      это сарказм?

  • @marinagrishina4369
    @marinagrishina4369 Před 3 lety +60

    в Webpack 5 теперь нужно немного поправить devtool - вместо пустых кавычек '' подставить false
    devtool: isDev ? 'source-map' : false

  • @maksymleonidov7059
    @maksymleonidov7059 Před 4 lety +120

    25:01 Скорее всего у автора также установлен webpack-cli и глобально, иначе бы команда webpack не вызвалась из терминала. Чтобы не ставить webpack-cli глобально, можно запускать команду в виде 'npx webapck' или создать script в package.json, с помощью которого можно буде вызывать локально установленный webpack

    • @olegpristashkin9078
      @olegpristashkin9078 Před 4 lety

      а что это даст?

    • @unheilbar
      @unheilbar Před 3 lety

      @@olegpristashkin9078 тогда он будет использоваться с директории node_modules/.bin

    • @user-yw3xd6ng3c
      @user-yw3xd6ng3c Před 3 lety

      @Exa1t у меня тоже самое. Кто нибудь нашел решение?

    • @user-xc2zz5dq7r
      @user-xc2zz5dq7r Před 3 lety

      @Exa1t далее когда импорты пропишешь, подхватит

    • @zubrdens
      @zubrdens Před 2 lety +2

      Спасибо за совет, поставил глобально (npm install --global webpack-cli), тогда команда webpack прошла.

  • @vasilymishanin
    @vasilymishanin Před 2 lety +26

    Спасибо за отличное видео, оно дает полное представление о работе webpack.
    Теперь не нужно искать тот самый сакральный конфиг ))
    Немного из 2022 (из Webpack 5) (возможно, я ошибаюсь, поправьте):
    - вместо CleanWebpackPlugin: просто добавить свойство clean:true в output;
    - вместо use:['file-loader']: можно прописать type: "asset/resource";
    - на отсутствие @babel/plugin-proposal-class-properties у меня уже не ругался;
    - eslint-loader is deprecated: использовал eslint-webpack-plugin.

    • @RM-bc4pz
      @RM-bc4pz Před 2 lety +1

      Без babel/polyfill запускается асинхронная функция?

    • @langonar
      @langonar Před 2 lety +1

      Спасибо, мил человек

    • @AqVadPlay
      @AqVadPlay Před rokem

      @@RM-bc4pz Да, запускается с ним и без него

    • @AqVadPlay
      @AqVadPlay Před rokem

      "- на отсутствие @babel/plugin-proposal-class-properties у меня уже не ругался;" Потому что статик перешел на другой стейдж и ему теперь для работы отдельный плагин не нужен

    • @nikitachihranov1072
      @nikitachihranov1072 Před rokem

      @@AqVadPlay спасибо)

  • @oOIMAXIOo
    @oOIMAXIOo Před 4 lety +125

    Ты герой современного программирования!

    • @Darkrogua
      @Darkrogua Před 4 lety

      @@ne4to777 У зоракса немного другой подход

  • @stanislavgerasimov3534
    @stanislavgerasimov3534 Před 4 lety +208

    Лайк не глядя, когда понимаешь, что следующие три часа пройдут офигенно

    • @VladilenMinin
      @VladilenMinin  Před 4 lety +3

      Приятного просмотра)

    • @igortobert
      @igortobert Před 4 lety

      поддерживаю!

    • @ilikecola378
      @ilikecola378 Před 3 lety +6

      3*4 если пробовать и изучать

    • @happy_natalya
      @happy_natalya Před 2 lety

      Абсолютно согласна🤩

  • @user-bh2yn6zx8s
    @user-bh2yn6zx8s Před 3 lety +40

    для webpack-dev-server:
    "start": "webpack serve --mode development --open"

  • @yamuru22
    @yamuru22 Před 4 lety +16

    Видео просто 11/10. Просмотрел курс за один присест на скорости 2х. Хочу отметить, что у Вас очень четкая речь и на такой скорости я могу прекрасно понимать, что Вы говорите. Спасибо большое!

  • @vladislavozinkovskyi8276
    @vladislavozinkovskyi8276 Před 4 lety +33

    касательно "Автоматизации копирования статических файлов" 1:41:21
    После обновления до 3.11 появился новый шаблон , следующая запись теперь должна выглядеть вот так:
    new CopyWebpackPlugin({
    patterns: [
    {
    from: path.resolve(__dirname, "src/favicon.ico"),
    to: path.resolve(__dirname, "dist")
    },
    ]
    })

  • @AlexanderShinigami
    @AlexanderShinigami Před 2 lety +5

    clean-webpack-plugin в пятом вебпаке уже не нужен, можно просто в output прописать настройку clean: true

  • @dlazder3937
    @dlazder3937 Před rokem +6

    Вместо use ['file-loader'] для лоадеров пишите: type: 'asset/resource'
    Например:
    {
    test: /\.(png|jpe?g|svg|gif)$/,
    type: 'asset/resource'
    },
    У кого не работает devServer пишите так:
    devServer: {
    static: {
    directory: './src',
    },
    port: 4200,
    },
    Для copy-webpack-plugin:
    new CopyWebpackPlugin({
    patterns: [
    {from: './assets/favicon.ico', to: ''}
    ]
    })
    где from это путь к файлу, а to это куда надо перенести. Если нужна отдельная папка в папке dist то вписываем название, если нет оставляем кавычки пустыми
    optimize-css-assets-webpack-plugin не заработал, для минификации css в production используйте данный код:
    //установить
    npm install css-minimizer-webpack-plugin --save-dev
    //подключить
    const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
    и вот кусочек кода для функции optimization.
    if (!isDev) [
    config.minimizer = [
    new CssMinimizerPlugin(),
    new TerserWebpackPlugin(),
    ]
    ]
    Babel сейчас подключается так:
    {
    test: /\.m?js$/,
    exclude: /node_modules/,
    use: {
    loader: 'babel-loader',
    options: {
    presets: ['@babel/preset-env'],
    }
    }
    },
    Еще в корневом каталоге проекта я создал файл babel.config.json и вписал в него
    {
    "presets": ["@babel/preset-env"]
    }

    • @user-zv9iy3lm5n
      @user-zv9iy3lm5n Před rokem +1

      Спасибо добрый человек!!!

    • @user-lm9nr4eo2f
      @user-lm9nr4eo2f Před 11 měsíci

      А сам лоадер file-loader тогда нужен? Update: file-loader вообще больше не нужен.

    • @user-lm9nr4eo2f
      @user-lm9nr4eo2f Před 11 měsíci

      css не работает

    • @dlazder3937
      @dlazder3937 Před 11 měsíci

      @@user-lm9nr4eo2f может еще что поменяли)

    • @krisriva2770
      @krisriva2770 Před 3 měsíci

      Спасибо огромное!

  • @craioffear2619
    @craioffear2619 Před rokem +2

    Просто лучший курс по вебпаку! 3 дня по 10 часов рыл все что можно, ничего не получалось, посмотрел твой курс в 3 часа и все получилось) спасибо тебе!

  • @imCitRUS
    @imCitRUS Před 4 lety +174

    Давай ESLint) И Jest было бы неплохо :)
    А видео топ! Спасибо)

  • @adil88201
    @adil88201 Před 2 lety +2

    0:48:53
    У кого не работает npm run dev или npm run build нужно написать
    "scripts": {
    "dev": "npx webpack --mode development",
    "build": "npx webpack --mode production"
    }
    вместо
    "scripts": {
    "dev": "webpack --mode development",
    "build": "webpack --mode production"
    }

  • @coderslav4505
    @coderslav4505 Před 2 lety +31

    Не знаю, как у вас, но у меня file-loader ломает картинку (она не открывается) при работе с CSS (например, при использовании в background-image). Нашел решение: не использовать file-loader :) Оказывается в webpack есть встроенный file-loader. Просто пропишите следующее правило, вместо правила на использования file-loader:
    {
    test: /\.(png|svg|jpg|jpeg|gif)$/i,
    type: 'asset/resource'
    }

    • @hlebhlebowski
      @hlebhlebowski Před 2 lety

      верно, я часа полтора решал эту проблему. и момент в этом видео хватает подобных. все приходилось гуглить... не особо актульное видео.

    • @kaelnlarien7623
      @kaelnlarien7623 Před 2 lety +2

      вебпак у вас 5 версии, а на то время её не было

    • @deniskotov
      @deniskotov Před 2 lety +2

      Реально сработало, спасибо. 3 дня пытался понять, что не так.

    • @romko-romario
      @romko-romario Před 2 lety +2

      Искренне благодарю, помогло! А я-то думаю, в чём беда. Думал, потому, что использую sass-loader, а оно вот что.

    • @maksimaisin743
      @maksimaisin743 Před 2 lety +1

      спасибо мужик! а то я прям голову сломал! причем до установки file-loader все работало, и я не сразу понял, что сломалось именно из-за этого.

  • @user-pp5vq8ny6y
    @user-pp5vq8ny6y Před 4 lety +19

    Влад, твои курсы очень помогают подтягиваться по стэку, а вебпак прямо вишенка на торте) Огромное спасибо)

  • @user-bp3vk3uj8h
    @user-bp3vk3uj8h Před 3 lety +1

    Ну как бы ура. наконец-то вменяемый человек адекватным языком объясняет, что и зачем в нужном объеме для понимания, но не слишком глубоко, чтобы не чувствовать себя полным критином. Спасибо Владилен. Чисто, Ясно, Информативно и можно сразу брать на вооружение.

  • @user-el8mi1sd2u
    @user-el8mi1sd2u Před 2 lety +2

    У кого не работает webpack-dev-server, в конфиге нужно указать следующее:
    devServer: {
    open: true,
    hot: true,
    port: 'auto',
    static: {
    directory: './src',
    watch: true
    }
    }
    на январь 22 года всё работает

  • @brabus765
    @brabus765 Před 2 lety +6

    25:24 npx webpack так компилируется сейчас

  • @whyNotCookies
    @whyNotCookies Před 3 lety +39

    Если пишете в vsCode и вдруг возникнет проблема с MiniCssExtractPlugin
    Error: Automatic publicPath is not supported in this browser
    Получилось победить так:
    test: /\.css$/,
    use: [
    {
    loader: MiniCssExtractPlugin.loader,
    options: {
    publicPath: path.resolve(__dirname, 'dist')
    },
    }
    ,'css-loader'
    ]

    • @annagardt2360
      @annagardt2360 Před 3 lety +1

      Спасибо! Мне помог Ваш комментарий!

    • @denideni2633
      @denideni2633 Před 3 lety +1

      Брат ты лучший)

    • @user-cd1sr5sx2r
      @user-cd1sr5sx2r Před 3 lety

      Спасибо!

    • @user-kv5xf8qw7f
      @user-kv5xf8qw7f Před 3 lety +2

      Две чашечки чая этому господину!

    • @user-xl9ob4xy1x
      @user-xl9ob4xy1x Před 3 lety

      ....Да обрящет ищущий!
      Спасибо дружище! Двое суток в ступоре, и ищу ответ на описание MiniCssExtractPlugin именно на этот Error: Automatic publicPath... и т.д. Интернет выдает много, да всё не то. Хорошо что мелькнула мысль заглянуть сюда в этот чат. Огромное спасибо.

  • @user-iu9ws5de7t
    @user-iu9ws5de7t Před 3 lety +19

    Спустя 3ч. "Ура, мы закончили с базой вебпака"
    ААААААААААААА

  • @aviaavia9147
    @aviaavia9147 Před 3 lety +6

    Для тех у кого проблемы с установкой optimize-css-assets-webpack-plugin, установите его вот таким способом:
    1) npm i -D optimize-css-assets-webpack-plugin@4.0.0
    2) npm audit fix --force
    И тогда в packege.json появится этот плагин последней версии

  • @vladosk-lv6kp
    @vladosk-lv6kp Před 4 lety +23

    Отличный курс, спасибо большое!
    Есть пара вопросов
    1) Как вставлять картинки через img? Путь указывать относительно исходного индекса или от скомпиленого?
    2) Как в папке dist сохранить удобную структуру - папки со скриптами, стилями, картинками и т.п.

  • @MDanshin
    @MDanshin Před 4 lety +43

    Как обычно - лайк не глядя! Уверен, что контет самый лучший, как обычно!

  • @pliaronstudio5149
    @pliaronstudio5149 Před 2 lety +2

    Для тех у кого не работет webpack-dev-server (автообновление):
    В файле package.json команда start должна быть такой:
    "start": "webpack serve --open"
    В файле webpack.config.js настройки devServer должны быть такие:
    devServer: {
    port: 4200,
    watchFiles: ["./src/*"],
    },

    • @mariakhabian2744
      @mariakhabian2744 Před rokem

      Большое спасибо за рабочее решение! =)

  • @seliyencko7738
    @seliyencko7738 Před rokem

    Это один из лучших курсов. Автор делает большой охват материала, давая понять принципы работы Webpack. Материал очень качественный.

  • @user-yq5vv1yp4b
    @user-yq5vv1yp4b Před 3 lety +63

    Для тех кто смотрит в 2021 hmr больше прописывать не надо!

    • @dyscyber
      @dyscyber Před 3 lety +7

      @@dasi4301 у мамы спросил. А как ты думаешь где?) Может быть на официальном сайте webpack, который регулярно обновляется?)

    • @dyscyber
      @dyscyber Před 3 lety +5

      @@dasi4301 да не "агрюсь" я. Просто вопросы найглупейшие. Понимаю теперь, что ты ещё подросток, судя по твоей фразе "агриться", однако пойми - в прогинге и разработке приложений нечего делать, если человек не умеет самостоятельно искать информацию, ибо это будет составлять минимум 70% всей твоей работы.

    • @PWBastille
      @PWBastille Před 2 lety +4

      щастья, здоровьечка тебе, добрый путник, ты сэкономил мне кучу времени и нервов)

  • @romanliapkin5174
    @romanliapkin5174 Před 4 lety +11

    На конец то бл*ь, нормальное объяснение.jpg .
    Не очень люблю видео гайды, не удобно отматывать и искать что то повторить, но нормальных текстовых туториалов по вебпаку нет, от слова совсем.
    Но ваш туториал прям путеводная звезда! Хоть кто то в полном объеме объясняет что происходит, и что нужно делать. Спасибо за огромный труд.

  • @one-zero-dev
    @one-zero-dev Před 4 lety

    Топовый курс! Особенно понравилось, что разобрано много ошибок, которые могут встретиться при настройке кофигурации Webpack
    Добавлю, что при установке некоторых пакетов возникали другие ошибки типа:
    } catch {}
    SyntaxError: Unexpected token {
    Всё дело в том, что у меня более старая версия node. Если кто поймает такую ошибку, поищите на npmjs.com предыдущие версии пакета и поставьте его:
    npm i название_пакета@версия

  • @MaxYanov
    @MaxYanov Před 4 lety +1

    Как всегда супер!
    Друзья, давайте поможем Владилену с продвижением,
    он трудится, хорошо объясняет, уверен вы согласитесь со мной что пришло время нам его отблагодарить.
    Делитесь его видео в соцсетях. Я уже.

  • @1604MafiaBest
    @1604MafiaBest Před 3 lety +10

    Итак судя по всему в новой версии webpack на 26/11/20 нельзя запустить webpack-dev-server --open, во первых теперь команда выглядит так "start": "webpack serve", а для дополнительных опций, таких как открытие окна браузера переходим в конфиг и в module.exports{devServer: {
    open: true}}

    • @artthemad
      @artthemad Před 3 lety

      спасибо тебе!!! помогло!!!

  • @stereogrid
    @stereogrid Před 4 lety +9

    Вот что такое "шок контент"... Владилен, ты просто мега крут

  • @xqz666
    @xqz666 Před 3 lety

    Досмотрел до конца, с моим графиком работы, все посмотреть и попробовать 90% материала ушла почти неделя. Спасибо Автору , он находка для тех кому html, css, изучение js c lernjavascript уже кажется банальностью.

  • @Angelica-mv9gg
    @Angelica-mv9gg Před 3 lety

    спасибо за видео! для тех у кого не пашет hot dev-server, даже после обновления команды, в package.json: "start": "cross-env NODE_ENV=development webpack serve --mode development", в webpack.config.js: devServer: {
    port: 8080, // любой порт
    open: true,
    watchOptions: {
    poll: true,
    ignored: "/node_modules/"
    },
    }, и еще в module.exports добавить target: 'web'. Последняя настройка обязательна если стоит "browserslist" в package.json. Пока что они несовместимы без этого, по крайней мере, у меня ничего не вышло

  • @VladilenMinin
    @VladilenMinin  Před 4 lety +47

    Подписывайтесь на мой инстаграм: instagram.com/vladilen.minin/

    • @user-vl5dh4tz2i
      @user-vl5dh4tz2i Před 3 lety +1

      Здравствуйте, с удовольствием смотрю, пишу, повторяю за Вами основы js. Какой курс выбрать ..базовый или есть может что-то попродвинутей?

    • @NextgenSocialReptile
      @NextgenSocialReptile Před 3 lety

      Марина Гайдукевич jsexcel.ru идеально подойдет

    • @user-vl5dh4tz2i
      @user-vl5dh4tz2i Před 3 lety

      @@NextgenSocialReptile последнее уточнение...Это три блока курса, начиная с базового. 80 тыс руб. Правильно? Увидела полтора месяца, это один блок курса? Сколько по времени длится весь курс?
      Спасибо.

    • @NextgenSocialReptile
      @NextgenSocialReptile Před 3 lety

      Марина Гайдукевич нет, весь курс можно взять за 10. Если нужны ещё опции то для этого другие пакеты)

    • @__pava8037
      @__pava8037 Před 3 lety

      как называется тема в vscode подскажите

  • @bleschunov
    @bleschunov Před 2 lety +1

    Чтобы заработал wepback-dev-server попробуйте в конфиге прописать devServer: { static: './src' } и в package.json прописать команду "start": "webpack server --open"

  • @serjlavr449
    @serjlavr449 Před 2 lety +12

    dev server не работал лайв релоад, исправил конфиг на:
    devServer: {
    hot:false,
    liveReload: true
    },
    а в package.json:
    "start": "webpack-dev-server --mode development --open"

  • @daurenaidenov1992
    @daurenaidenov1992 Před 2 lety +15

    2:43:20 У кого в Webpack 5 не работают динамические импорты вместе с lodash, то вместо
    "import('lodash').then(_ => {})"
    пишем
    "import('lodash').then(({ default: _ }) => {})"

    • @user-cr8ln4rm4u
      @user-cr8ln4rm4u Před 2 lety +1

      спасибо!

    • @user-rn3et9eh5x
      @user-rn3et9eh5x Před 2 lety +1

      import("lodash").then(({ default: _ }) => { console.log("Lodash\t", _.random(0, 27, true)); });

    • @nikitachihranov1072
      @nikitachihranov1072 Před rokem

      спасибо большое!

    • @nikitachihranov1072
      @nikitachihranov1072 Před rokem

      и еще у меня в dist файл 0.js не появился. Хотя все работает.

  • @pavel.arepev
    @pavel.arepev Před 4 lety +10

    Если у кого не работает SASS на 2:07:10 : попробуйте переписать вместо
    test: /\.s[ac]ss$/,
    на
    test: /\.(sass|scss)$/,

    • @dangor220
      @dangor220 Před 2 lety

      В моем случае помогла следующая строка: test: /\.sass$|scss/,

  • @user-lg7yq6ky1r
    @user-lg7yq6ky1r Před 2 lety +3

    С развитием вашего канала все директора платных курсов плачут и с валерьянкой "ждут" новых выпусков) спасибо за ваш труд!

  • @Civilizer1976
    @Civilizer1976 Před 3 lety

    Ура!!! Поздравьте меня! Три дня назад жаловался здесь, что не осилил этот курс и вернусь к нему позже. Но, блин, не тот человек походу. Как так - это первая технология которая мне не покорилась, да ну нафиг - быть такого не может...
    В итоге в пятницу кое-как дождавшись окончания работы, начал искать - в чём дело. В итоге: почистил линукс(а он у меня на виртуалке), пересмотрел ещё другие видео по Вебпаку, более раннего периода, в том числе и Владилена, но более раннее на другом канале, так-же Дмитрия Лаврика, ещё кого-то. Всё повторял, ничего не выходило. Перечитал кучу рекоммендаций. В конце концов научился устанавливать и использовать разные версии node.js, устанавливать более ранние пакеты с помощью npm, переустановил даже VSCode и все расширения. В итоге снова решил повторить этот курс, но уже с параметрами как в этом видео. И в итоге всё заработало как надо. Я рад безмерно! Понятно, что мне ещё рановато до использования этой технологии, но всё-же: а что если вдруг, буду устраиваться, или возьму какой-то заказ, а там требование - Вебпак, вот я облажался - бы. А теперь я уверен что всё сработает. Благодаря данному курсу. Вот какие параметры package.json - блок "devDependencies":
    "devDependencies": {
    "clean-webpack-plugin": "^3.0.0",
    "css-loader": "^5.0.0",
    "csv-loader": "^3.0.3",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^4.5.0",
    "style-loader": "^2.0.0",
    "webpack": "^4.41.5",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.10.1",
    "xml-loader": "^1.2.1"
    },
    node.js v10.23.0 (lts/dubnium)
    P.S. не получалось с последними версиями. Понятно, что ещё проблемы будут, но главное что WDS работает и в теге строчка с картинкой отображается уже НЕ как путь до неё(как было) а именно маркапом вида
    "img": "47692505d122dbcae490be2492a60b2e.png"

  • @ITWork-m8j
    @ITWork-m8j Před měsícem

    Клёвый курс, мне раньше вебпак казался сложным и я не понимал зачем он нужен, но теперь мое мнение изменилось и вебпак мне кажется удобным и полезным

  • @Gor0d
    @Gor0d Před rokem +3

    Огромное спасибо за урок!!! Не без страданий и гуглёжа, но я его осилил и многое понял!
    Пометки из 2023:
    1) если у вас стоит расширение jshint - удаляйте его НЕЗАМЕДЛИТЕЛЬНО! (из-за него я настрадался при подключении React)
    2) по BundleAnalizerPlugin - может не сработать, а вернее не сработает, если импортируете так, как показано в уроке. Делайте так:
    - const BundleAnalizerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
    3) решения по остальным несостыковкам, возникающим в связи с развитием webpack с момента записи урока - ищите в комментариях

  • @TemkaMineCraft32rus
    @TemkaMineCraft32rus Před 2 lety +127

    1:09:00 ! Для тех людей, у которых создаётся лишняя картинка, нужно в конфиге вместо use: ['file-loader'] написать type: 'asset/resource'

    • @user-sr8eo3ct9h
      @user-sr8eo3ct9h Před 2 lety

      Работает, а почему так ?

    • @user-r3t
      @user-r3t Před 2 lety +4

      ​@@user-sr8eo3ct9h webpack 5 версии решил сделать их из коробки, для упрощения работы с другими созависимыми модулями.

    • @velsh3946
      @velsh3946 Před 2 lety

      спасибо!

    • @user-np3rm3kq4z
      @user-np3rm3kq4z Před 2 lety

      Спасибо:)

    • @lalathealter6513
      @lalathealter6513 Před 2 lety

      Спасибо

  • @str1ve450
    @str1ve450 Před 2 lety +4

    Владилену большое спасибо за видео, а для тех, у кого webpack 5 версии или более, и при установке optimize-css-assets-webpack-plugin ошибки, устанавливайте css-minimizer-webpack-plugin

    • @user-yk9nj6co9d
      @user-yk9nj6co9d Před 2 lety +1

      Да хранит тебя Аллах, мил человек )

  • @sergeytikhonov6544
    @sergeytikhonov6544 Před 10 měsíci +1

    до сих пор лучшее видео про вебпак на ютубе

    • @RuslanNumber1
      @RuslanNumber1 Před 7 měsíci

      Я сам не досмотрел видео от Ulbi и пришел сюда, здесь подача комофртнее. Владилен обьясняет лучше.

  • @evgenOksigen
    @evgenOksigen Před 4 lety

    Для тех у кого будет ошибка что "webpack module not found" или что "zsh не знает такой команды webpack" : как вариант решения - вам нужно установить webpack + webpack-cli + webpack-dev-server глобально с помощью команды " sudo npm i -g webpack webpack-cli webpack-dev-server " теперь можете (находясь в папке проэкта) запускать команду webpack и получите результат такой же как в видео )
    Всем добра, Владилену - спасибо за годный контент
    Ты крут !

    • @user-oy7rm2kz4z
      @user-oy7rm2kz4z Před 4 lety

      не обязательно глобально ставить вебпак, можно использовать npm утилиту - npx. Установить пакет, потом запускать - Например npx webpack

  • @Diyaz86
    @Diyaz86 Před 2 lety +3

    кто смотрит в 2022 году. Теперь babel можно установить так: npm install -D babel-loader @babel/core @babel/preset-env webpack. А в конфиге сделать так: {
    test: /\.m?js$/,
    exclude: /(node_modules|bower_components)/,
    use: {
    loader: 'babel-loader',
    options: {
    presets: ['@babel/preset-env']
    }
    }
    }
    И тогда babel будет понимать и асинхронную функцию и отобразит Util.id без дополнительных настроек

  • @MC-sn7yk
    @MC-sn7yk Před 3 lety +11

    Если вдруг возникнет проблема с MiniCssExtractPlugin
    Error: Automatic publicPath is not supported in this browser
    Получилось победить так:
    test: /\.css$/,
    use: [
    {
    loader: MiniCssExtractPlugin.loader,
    options: {
    publicPath: path.resolve(__dirname, 'dist')
    },
    }
    ,'css-loader'
    ]

    • @artthemad
      @artthemad Před 3 lety +1

      спасибо большое!

    • @dmitriysannikov6122
      @dmitriysannikov6122 Před 3 lety +1

      Кстати у меня в таком случае не грузилас картинка. publicPath: '/dist Изменил на такое,и все работает
      '

    • @artthemad
      @artthemad Před 3 lety +1

      @@dmitriysannikov6122 хм, у меня тоже была ошибка с подгрузкой изображений , но я думал на file-loader, а в итоге просто костылём всё решил. Писал background-image не в css файле, а в переменной в react и там в файле добавлял уже эту переменную к style блока . Надо будет проверить ваш вариант, спасибо.

    • @user-xd6ev4gz2k
      @user-xd6ev4gz2k Před 3 lety +3

      если не грузятся шрифты и картинки, то вот так:
      {
      test: /\.css$/,
      use: [
      {
      loader: MiniCssExtractPlugin.loader,
      options: {
      publicPath: (resourcePath, context) => {
      return path.relative(path.dirname(resourcePath), context) + '/';
      },
      },
      },
      'css-loader',
      ],
      },

    • @alexbekar6978
      @alexbekar6978 Před 3 lety

      @@user-xd6ev4gz2k Спасибо)

  • @kotovadana
    @kotovadana Před 4 lety +3

    Спасибо огромное за видео! Повторяла все, о чем ты рассказывал, не осталось ни одного вопроса, все максимально понятно!) То, что ты делаешь - нереальный труд и огромная инвестиция в будущих программистов)) Не представляю сколько времени тебе заняло научиться так четко и легко объяснять сложные вещи...Спасибо большое!))

  • @ILDARRKAMALOV
    @ILDARRKAMALOV Před 2 lety +1

    Спасибо большое. Одно из самых дельных видео по Webpack. Правда на 2022 год видео немного устарело, некоторые конфигурации для некоторых плагинов пришлось переписать (это всё очень быстро нагуглилось и проблем не составило) и всё запускается и работает.

  • @Max-kr4ie
    @Max-kr4ie Před 4 lety

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

  • @gladiatorrussia
    @gladiatorrussia Před 3 lety +26

    Пожалуйста сделай курс по Webpack 5

  • @alexsoft7073
    @alexsoft7073 Před 3 lety +14

    Владилен, сделай пожалуйста курс на Webpack 5, много чего уже поменялось
    Лайк, чтобы в топ

    • @sanlaynx
      @sanlaynx Před 3 lety

      а какой смысл? чуть меняется синтаксис , а в целом в данном видео понятна вся суть и механика пакета

  • @kalychka
    @kalychka Před 4 lety

    Владилен, наткнулся на твой канал на днях, как раз надо было настраивать вебпак, скажу вот что: ты единственный, кто смог изложить материал так, что понятно абсолютно все, благодаря тебе я смог настроить все правильно. У тебя актуальная информация по вебпаку. Единственное, чего не хватило - это как расположить файлы в папке dist по категориям, структурировать, но думаю в документации я найду ответ. Спасибо тебе, я никогда не пишу комментарии, но это отдельный случай!

  • @unselfishpodcast888
    @unselfishpodcast888 Před 2 lety +1

    Не знаю есть ли еще те, у кого не работает "wabpack" в консоли, но нашел способ обойти:
    - в "package.json" в поле "script" заменяем команду "test" на "built" и в значении пишем "webpack --config webpack.config.js"
    - теперь в консоли у нас доступна команда "npm run built" после чего создается папка "dist" с тем самым "bundle.js"
    *но в "bundle.js" нем не будет тех "100 строк которые мы не писали" что появляются у Владилена, но import&export работать будут, не знаю с чем это связано
    *хотя тут могут уже такие вещи как разница версий влиять

  • @nikita7978
    @nikita7978 Před 4 lety +8

    Спасибо, из всех кого я когда-либо смотрел, твои видео самые понятные и их приятно смотреть

  • @eGusevWeb
    @eGusevWeb Před 4 lety +3

    Когда шёл на CZcams за обучалками по Webpack - прямо таки молился, чтоб у Владилена Минина был такой контент ) пушка! Спасибо!

  • @sonterix
    @sonterix Před 3 lety +2

    Меня очень веселит то, как ты шрифт называешь 'работо' 😄

  • @demimurych1
    @demimurych1 Před 3 lety +2

    59:50 *Подгрузить JSON и JavaScript*
    Вероятно следует уточнить этот вопрос, потому как для многих он не до конца прозрачен.
    В самом JS нет ни возможности прочитать файл, ни тем более получить что-то удаленно.
    Этот функционал импортируется разными сторонними API, в зависимости от условий в которых работает JS.
    В случае node это FSReqCallback который является оберткой вокруг uv_fs_* функций из C++
    В случае браузерной среды, можно использовать xhr api с пришедшим ему на смену fetch api.
    А для чтения локальных файлов, вполне уже можно использовать Filesystem Api.
    В случае какого нибудь китайского чайника с js на борту может вообще не быть никаких аналогов.
    Важно всегда проводить эту границу, чтобы вдруг потом не удивляться почему это в Node нет Fetch

  • @danko5678
    @danko5678 Před 3 lety +3

    Сейчас file-loader для картинок и шрифтов не нужен, просто прописываете в конфиге test: /\.(?:ico|gif|png|jpg|jpeg)$/i, type: 'asset/resource', и test: /\.(woff(2)?|eot|ttf|otf|svg|)$/, type: 'asset/inline', соответственно

  • @killd0z3r
    @killd0z3r Před rokem +3

    Какая версия ноды в проекте? Ловлю кучу ошибок при запуске исходника

  • @sa1ntseye648
    @sa1ntseye648 Před 2 lety +2

    2022 год . У кого не пашет картинка вот решение :
    Пишем в webpackconfig:
    output: {
    ...
    assetModuleFilename: 'assets/images/[hash][ext]',
    },
    module: {
    rules: [
    {
    ...
    test: /\.(png|svg|jpg|jpeg|gif)$/i,
    type: 'asset/resource',
    }
    ]
    }
    Вся суть в том , что в правиле где "use: [file-loader]" нужно просто его убрать и заменить на "type: 'asset/resource'"

    • @Dubik_Ks
      @Dubik_Ks Před 2 lety

      спасибо тебе, добрый человек! Пусть твои коды никогда не знают багов :))))

  • @user-xj6nu7gf6n
    @user-xj6nu7gf6n Před 7 měsíci

    Отличное видео, стало понятно как работает webpack и другие сборщики, Спасибо!

  • @_batia_es
    @_batia_es Před 4 lety +3

    "можно помедленнее, я записываю" ©️
    спасибо! много чего стало понятно, буду пробовать применять на практике 🎓. жму руку и палец вверх. 🖖

  • @maximminchenko7633
    @maximminchenko7633 Před 4 lety +7

    Уфффф) Просто лайк не глядя! UPD: было бы круто разобрать и Eslint

  • @ResultSchool
    @ResultSchool Před 2 lety +2

    Для тех, кто хочет освоить профессию Frontend разработчика за 7 месяцев -
    bit.ly/3yqZNNV
    Освоить основы веб-разработки бесплатно. Курс по HTML & CSS - bit.ly/3yqoeuR

  • @fractonart7500
    @fractonart7500 Před 4 lety

    Спасибо, за Работу, Владилен. Решил изучать реакт нэтив встретил этот канал. Купил курс и сэкономил очень много времени в изучении хотя никак не выберу время дойти екго до конца. На мой взгляд здесь самый качественный контэнт по фронтенду в рунете. Еще раз Спасибо!

  • @user-uo5pk3nj3n
    @user-uo5pk3nj3n Před 4 lety +16

    Владилен круто будет увидеть ролик по eslint настроеный и видео по тестам на jest

  • @user-jx8dh2de3e
    @user-jx8dh2de3e Před 4 lety +1

    Владилен, огромнейшее спасибо! Это космос.) Каналу в топ осталось пожелать, а плюсов в карму ты и так дофига заработал; ))

  • @user-rn3et9eh5x
    @user-rn3et9eh5x Před 2 lety +1

    Люди, у которых в 2:41:35 возникает вот такая ошибка:
    TypeError: Cannot read properties of undefined (reading 'getFormatter') - нужно установить npm пакет вот такой версии "eslint": "^7.13.0" и запустить заново

  • @lockd0wnll178
    @lockd0wnll178 Před 4 lety +105

    Я человек простой, вижу твои видосы - сначала лайкаю, а потом смотрю xd

    • @VladilenMinin
      @VladilenMinin  Před 4 lety +5

      Классный алгоритм)

    • @user-sh7bb6hk6f
      @user-sh7bb6hk6f Před 4 lety +1

      Аналогично.

    • @user-sh7bb6hk6f
      @user-sh7bb6hk6f Před 4 lety +7

      Я вообще как зашел на канал завис по полной. Не могу оторваться.

    • @beefeater5427
      @beefeater5427 Před 4 lety

      CZcams плохо относится в видео, которые лайкают до просмотра. Поэтому посмотри хотя бы до половины перед лайком

    • @user-lr9ed1hu2j
      @user-lr9ed1hu2j Před 4 lety

      @@VladilenMinin ну вообще, говорят что ютьюб не засчитывает лайк, если сначала его ставишь, а потом смотришь видос. Так что в алгоритме баг завёлся)

  • @garikmelqonyan9130
    @garikmelqonyan9130 Před 3 lety +3

    Thank you once more, Vladilen for this awesome tutorial. As I have said in my previous comments, your tutorials are of high value for those who want to learn something new. They stand out with null unnecessary talk and much useful info explained step by step. In this video, it became clear to me how js frameworks(react, vue) work and why are there so many files.
    Thank you so much because to sit down and figure out all these things would be really hard for one and you have done it for your auditory.

  • @siarheilabetsik5658
    @siarheilabetsik5658 Před 3 lety

    с JQuery будет работать, если вызвать функцию после render React. Но текст должен потеряться при перерисовке.

  • @user-zg9eg9es8j
    @user-zg9eg9es8j Před 4 lety

    Переслушивал учебный материал по нескольку раз, и каждый раз находил пропущенные мимо ушей полезности. Каждый комментарий по делу! Выражаю огромное уважение Владилену. Спасибо!

    • @VladilenMinin
      @VladilenMinin  Před 4 lety

      В этом видео и я правда очень много сконцентрировал)

  • @george6514
    @george6514 Před 3 lety +9

    1:47:08 У кого выдаёт "Automatic publicPath is not supported in this browser", пропишите в options:
    publicPath: (resourcePath, context) => {
    return path.relative(path.dirname(resourcePath), context) + '/';
    }

    • @user-eo4rp8fd8n
      @user-eo4rp8fd8n Před 3 lety

      Спасибо за помощь

    • @user-xd6ev4gz2k
      @user-xd6ev4gz2k Před 3 lety +1

      хахахахах, такая же ошибка была, гуглил час, разобрался, хотел написать как решить эту проблему, и вдруг ты тут с таким же решением, ты где был час назад?)

    • @emagcodeshake
      @emagcodeshake Před 3 lety

      Спасибо! ))

  • @igormajrov8444
    @igormajrov8444 Před 2 lety +8

    Эх, в 2022 году сборка не рабочая уже((( Выдает тонну ошибок при установке.

    • @maksimNNN
      @maksimNNN Před 6 měsíci

      npm ci не помогает?

  • @user-hr8no6vx4j
    @user-hr8no6vx4j Před 4 lety

    Автору респект. Хорошее видео для новичка. Показаны все этапы сборки приложения. Не открыл для себя ничего нового, но жалею, что не было подобного видео когда начинал изучать webpack.

  • @user-du3iz7qz7l
    @user-du3iz7qz7l Před 4 lety

    Благодарю. Все доступно и понятно, без лишней воды. Просмотрел на одном дыхании. Краткий конспект на 3 страницы вышел.

  • @alexchromets
    @alexchromets Před 4 lety +3

    То, что нужно и чего всегда не хватает. Спасибо!

  • @borislobanov7896
    @borislobanov7896 Před 3 lety +4

    Владилен, твои туториалы - просто огонь, спасибо тебе большое за твою работу, ты прям нереально помогаешь к собесам готовиться!

  • @nikolai4100
    @nikolai4100 Před 3 lety +2

    Владилен, спасибище! Я на ваших видео прям прокачася по многим темам! Патерны, вебпак, промисы, фетч. все огонь!

  • @rustamtishkov2479
    @rustamtishkov2479 Před 4 lety

    Чел ты лучший, я неделю назад много не понимал в js. На протяжение этой недели я смотрел твои видосы и с каждым днем js становился все понятнее и понятнее, щас досмотрю этот видос и начну vue. Тупа лучший, щас специально всем видосам лайки поставлю, даже те которые не смотрел

  • @johnd1431
    @johnd1431 Před 4 lety +5

    жжошь Влад, 3 часа информативного контента!

    • @VladilenMinin
      @VladilenMinin  Před 4 lety +1

      Сам удивился, что так много подготовил)

    • @johnd1431
      @johnd1431 Před 4 lety +1

      Владилен Минин я не успеваю твои старые ролики пересмотреть, пока штудирую старое - выходит новое. Вот это уровень

    • @VladilenMinin
      @VladilenMinin  Před 4 lety +2

      @@johnd1431 И мы только начинаем)

  • @nick_stelmakh
    @nick_stelmakh Před 4 lety +63

    То что нужно) будет что то о Docker-е ??

    • @dizelvinable
      @dizelvinable Před 4 lety

      Докер - это же бекенд. А так - было бы очень интересно тоже посмотреть.

    • @Levelord92
      @Levelord92 Před 4 lety +3

      @@dizelvinable И что, что бэкенд?) Автор так же учит ноде

    • @dizelvinable
      @dizelvinable Před 4 lety

      @@Levelord92 ааа, тогда супер) Надеюсь, скоро будет) А то разные видео про докер смотрел, но всё равно остаётся много вопросов.

    • @dmitryfokin5205
      @dmitryfokin5205 Před 4 lety +4

      @@dizelvinable ну не совсем для бэк. можно использовать и для развертывания разных окружений разработки фронт. ну и локально несколько бэков иметь, для разработки под них фронт - тож актуально

    • @dizelvinable
      @dizelvinable Před 4 lety

      @@dmitryfokin5205 Ясно, спасибо)

  • @aleksgavrilov5275
    @aleksgavrilov5275 Před 4 lety

    Очень подробно и хорошо всё разжевано и в рот положено)) то что доктор прописал, уже не первый раз пытался разобраться с вебпаком, но до этого все было безуспешно, спасибо от души!!!

  • @oleksandrsavych4526
    @oleksandrsavych4526 Před 4 lety

    Давно хотел разобраться с кучей ключей-конфигов для Webpack и очень рад, что нашел это видео! Спасибо большое, Владилен!

  • @lenakosyakova879
    @lenakosyakova879 Před 4 lety +3

    Лайк срочно! )) Спасибо, Владилен!

  • @dmitrysafronov9369
    @dmitrysafronov9369 Před 3 lety +4

    На последних версиях webpack-cli и webpack-dev-server не работает скрипт "webpack-dev-server --mode development --open". Запускайте через скрипт "webpack serve".

  • @hollow.one.w
    @hollow.one.w Před 3 lety

    как же он хорош...
    чел, ты настоящий учитель!
    материал очень хорошо разжеван, осталось только переварить

  • @weblegko
    @weblegko Před 4 lety

    Красавчик ! Спасибо! Я теперь твой постоянный зритель ) . Очень хорошо излагаешь - респект! Не пропускаю ни одного видоса ))). Webpack очень кстати - в наглядной форме закрыл некоторые пробелы в знаниях. Хотелось конечно еще бы увидеть тут про интеграцию с browsersync и адаптацию webpack для работы в связке с php ( в том числе и hmr), например при разработке wordpress-темы. Но это мои нескромные хотелки. А ваще, все твои курсы - это бомба!

  • @uzver3787
    @uzver3787 Před 3 lety +4

    01:52:06 Если проблема
    use: [
    {
    loader: MiniCssExtractPlugin.loader,
    options: {},
    },

  • @aprinciple9559
    @aprinciple9559 Před 4 lety +27

    Для CopyWebPackPlugin
    plugins: [
    new CopyPlugin({
    patterns: [
    { from: 'source', to: 'dest' },
    { from: 'other', to: 'public' },
    ],
    }),
    ],

    • @georgepetrosyan4589
      @georgepetrosyan4589 Před 4 lety +2

      da ia toje na etom poka zastral, potom polez na oficialku ona zakrita vremeno iza bezporadkov v USA, polez cherez cherez nashel etot block sdelal, zarabotalo. Pochustvoval sebia BOGOM WEBA :D :D :D

    • @dossh429
      @dossh429 Před 4 lety

      Время 1:42:13

    • @maxzhukov5525
      @maxzhukov5525 Před 4 lety +6

      Для тех, кто делает так же как в уроке:
      new CopyWebpackPlugin({
      patterns: [
      { from: 'favicon.ico', to: '../dist' },
      ],
      }),

    • @saint7794
      @saint7794 Před 4 lety +1

      Или поставить версию copy-webpack-plugin ^5.1.1

    • @georgepetrosyan4589
      @georgepetrosyan4589 Před 4 lety

      @@saint7794 nu esli eto ne poslednaia versia kotoryiu vi ukazivaete? To dumau luche stavit poslednuiu. A princip privazki ne imeet znachenie. Ved video snimalos za dolgo do vixoda novoi versii plugina)))

  • @ivan_sukhachev
    @ivan_sukhachev Před 4 lety

    Большое тебе человеческое спасибо, мужик!!
    Очень полезно и информативно.
    Нет воды, приятно слушать, подача материала четкая и внятная.
    Это большая и качественная работа.
    Отблагодарил на ЯД, еще раз спасибо!

  • @user-sz8yg7oe6g
    @user-sz8yg7oe6g Před 4 lety

    Владилен, спасибо за видео. Все понятно, без лишней воды. Это мое первое видео на твоем канале, теперь знаю чем заняться на выходных. Жду с нетерпением видео по ESlint. А то толковых гайдов по ниму днем с огнем. Ты реально круто доносишь информацию. Еще раз спасибо.

  • @user-wp9qv2zx9m
    @user-wp9qv2zx9m Před 3 lety +4

    Владилен, (пользуясь случаем) огромное спасибо за курс!!
    Остался один непонятный момент:
    на этапе (45:55), когда мы настроили webpack, чтобы он автоматом подключал js-файлы в шаблоне html,
    у нас фактически поломался наш первоначальный шаблон...
    Т.к. в первоначальном шаблоне у нас analytics.[contenthash].js подключался в хедере, а не в конце body...
    Предположим нам это критически важно. Как сделать так, чтобы analytics.[contenthash].js (т.е. именно с хешем в названии) отдельно подключался в хедере?

    • @SNSDfOu
      @SNSDfOu Před rokem

      разобрался?