Ответы пользователя по тегу Webpack
  • Ошибка с Babel при сборке Webpack?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Все пакеты связанные с babel обновил до последних версий

    А не надо было. Работает - не трогай.:)

    babel-core - старая версия семилетней давности, новая живёт тут: @babel/core.

    Когда ты обновил всё до последней - что-то осталось старое, что-то работает со свежим, и так просто хрен разберёшь. Верни как было и живи спокойно.
    Или же найди свежий нулевой пресет и перекинь проект на него, если так сильно хочется обновиться. Вручную же версиями библиотек жонглировать можно долго.
    Ответ написан
    3 комментария
  • Зависает на запросах после сборки через webpack?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Возможно дело в том что не вынесены node модули как внешние:
    const nodeExternals = require('webpack-node-externals');
    {
      // ...
      externals: [nodeExternals()],
    }


    Если это не поможжет, то отключи все плагины и оптимизацию.
    Не заработало?
    Сделай тестовый файлик с одним единственным методом, собери и посмотри на результирующий код - подебаж его руками и разберись в чём дело.

    Работает?
    Подключай плагины по одному пока не найдёшь виновника и разбирайся с конфигом оного.
    Ответ написан
  • Почему возникает ошибка при использовании переменной окружения в конфиге webpack?

    Aetae
    @Aetae
    Тлен
    Потестил.
    1. Проблема с conslole.log у тебя в русской "c", о чём намекает даже подсветка тут.
    2. npm run съедает параметр --env, т.к. считает его своим, чтоб передавать аргументы в скрипт надо использовать разделитель --: npm run build -- --env mode=development.
    Ну или выкинуть убогий npm и использвать yarn\pnpm, где такой ереси нет.:)
    Ответ написан
  • Почему проект, собранный через vite не позволяет открыть сборку локлаьно через index.html?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Почему?
    Потому что в классическом виде это один js файл подключённый через script, а в виде модулей - это множество файлов которые дополнительно грузятся внутри script. Ограничения безопасности браузеров по разному работают в данных ситуациях.

    Что делать?
    Не открывать современные приложения локально. Просто забудь о такой возможности. Установи глобально какой-нить alive-server и запуская через него. Если надо это распространять - прилагай микросервер в комплекте или смотри в сторону всяких виндовых однофайловых вариантов\pdf.
    Ответ написан
    3 комментария
  • Как правильно подгружать динамические изображения во Vue.js?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    require работает на этапе компиляции. Т.е. во время исполнения он уже должен был собрать все вызовы require и положить их в .js файл. require не может быть динамичным, потому что на этапе исполнения его тупо уже нет - он заменён на то, что он возвращает.

    Для решения подобных задач два варианта:
    1. require.context - который соберёт все файлы по предоставленному шаблону на этапе компиляции, и на этапе исполнения будет их подставлять. Этот вариант подходит если в папке img уже сейчас лежат все нужные изображения.
    2. Если изображения на этапе компиляции отсутствуют, а появляются каким-то сторонним образом в паке потом, то require тебе тут не нужен(и не поможет), просто динамически подставляй пути к ним как в твоём первом варианте.
    Путь от корня, если что, можно получить из __webpack_public_path__:
    root: __webpack_public_path__,
    <img :src="root + 'img/' + message.filename" :alt="message.filename"/>
    Ответ написан
    4 комментария
  • Как резольвить алиасы у скаченного через package.json репозитория?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Очевидно что пакет битый или ты подключаешь что-то не то.
    В готовой либе никаких алиасов быть не должно, на то она и готовая.

    Можно что-то нашаманить, но в каждом конкретном случае своё, потому что в любом случае через жопу.
    Ответ написан
    Комментировать
  • React | Как убрать повторяющиеся ../ в пути?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    У тебя в тегах вебпак, а значит тебе нужны именно его алиасы.

    Если ты используешь cra, то придётся костылить, через craco или подобное.
    Ответ написан
    Комментировать
  • Как писать fullstack с webpack?

    Aetae
    @Aetae
    Тлен
    webpack devServer, в частности функция proxy.
    Webpack поднимает сервер с горячей перезагрузкой фронта, бэк сервера поднимаешь на других портах, и обращаешься к api прозрачно с помощью встроенного прокси.
    Ответ написан
    Комментировать
  • Как импортировать все из папки?

    Aetae
    @Aetae
    Тлен
    Импортировать всю папку можно, но вот получить доступ ко всему - нельзя, можно только написать функцию которая будет забирать конкретный модуль:
    function getCommand(file) {
      return import(
        /* webpackInclude: /[A-Za-z0-9-_,\s]+\.ts$/i */
        `./commands/${file}`
      );
    }


    Ну и типы в обоих случаях нельзя так импортировать.
    Типы проверяются перед компиляцией и выкидываются, они никак уже не участвуют в сборке вебпака.
    Как ты это себе представляешь?

    Возможно тебе просто нужны глобальные типы? Тогда используй .d.ts, и\или подключай их в tsconfig.json.
    Ответ написан
    Комментировать
  • Как трансформировать js код для старой версии node.js?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    По идее preset-env должен автоматически подключить полифил для этого дела из core.js.
    Вот тут говорят, что таки да должен быть в современной версии.
    '@babel/preset-env', {
        useBuiltIns: 'usage',
        corejs: {version: 3, proposals: true},
    }
    Ответ написан
    Комментировать
  • Минифицировать названия классов используя css-module?

    Aetae
    @Aetae
    Тлен
    Магии не существует, друже.
    Что на самом деле делает webpack лоадер? Он берёт на вход какой-то файл, что-то с ним делает и выдаёт js-модуль(в виде строки) с результатом + какие-то побочные действия.

    Соответственно css-loader для модулей делает (утрировано) 2 вещи:
    1. Из входного css генерирует js-модуль с объектом вида
    { [ключ - настоящее имя класса]: [значение - минифицированное] }
    и отдаёт результат в js.
    2. Выполняет замену в css настоящих имён на минифицированные и сохраняет отдельно.

    Чтобы получить то, что ты хочешь - надо добавить некий loader для .js файлов который удалит все импорты css-модулей из кода(но сохраняя результаты) и заменит все обращения вида $style.className на значения из этих модулей.
    Погугли, что-то такое кто-то должен был запилить.)
    Ну и в любом случае, чтобы это работало нужна гарантия, что никакой динамики у тебя в коде работы с css модулями нет, т.е. что-то такое: $style[somevar + '__bold'], гарантировано сломает любую такую штуку.
    Ответ написан
    Комментировать
  • Почему openPage не работает с массивом страниц (Vue CLI, WebPack4)?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Поздравляю, ты нашёл баг в @vue/cli. Заведи им issue на github.
    Ответ написан
    Комментировать
  • Ошибка при создании приложения React?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Подозреваю # в пути лишний.
    Ответ написан
    Комментировать
  • Как добавить лоадер в выражение?

    Aetae
    @Aetae
    Тлен
    Ты можешь строить цепочки лоадеров: require(`!a-loader!b-loader!c-loader!file')
    Но это, на самом деле, неправильно. Правильный подход - прописать все цепочки для нужного расширения сразу в конфиге вебпака, со всеми нужными параметрами и просто делать require(`file').
    Ответ написан
    Комментировать
  • Можно ли использовать require от переменной?

    Aetae
    @Aetae
    Тлен
    Нет. Но ты можешь написать свой лоадер, который будет это делать. Это не сложно.
    Однако непонятно нахрена козе баян. Просто положи реальный файлик отдельно и всё, чем инлайн ужасы городить. Это прямо противоречит идее модульности, на которой всё это и построено.
    Ответ написан
    Комментировать
  • Как написать скрипт в package.json?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Сделайте свой скрипт: "serve": "node ./api/serve.js", а уж в нём что хотите и как хотите вызывайте.
    Ответ написан
    Комментировать
  • Как использовать хеш вместо имени файла?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    В теории, если vue-cli не лочит эту конкретную настройку webpack: configureWebpack / chainWebpack и output.filename / output.assetModuleFilename.
    Ответ написан
    Комментировать
  • Как изменить template для генерации html HtmlWebpackPlugin vue/cli@next PWA?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Документация: pwa.iconPaths?
    Ответ написан
    Комментировать
  • Как использовать WebpackDefinePlugin для использования в других плагинах?

    Aetae
    @Aetae
    Тлен
    Отдельные константы? 0_o
    const {APP_NAME} = require('./constants');
    
    new webpack.DefinePlugin({
            APP_NAME: JSON.stringify(APP_NAME),
          }),
    new HtmlWebpackPlugin({
            title: APP_NAME + " official"
    })
    Ответ написан
    Комментировать
  • В чем может быть причина, когда при импорте в 'webpack' возникает ошибка?

    Aetae
    @Aetae
    Тлен
    Semantic-ui мёртв. Есть активный форк: Fomantic-UI, скорее всего там это пофикшено.
    Ответ написан
    4 комментария