• Как выполнить функцию?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    const foo = () => (123321).toString();
    
    foo() // "123321"
    Ответ написан
    4 комментария
  • Как обновить зависимость у зависимости?

    Aetae
    @Aetae
    Тлен
    Ты можешь воспользоваться yarn resolutions для перезаписи зависимостей. Однако следует помнить, что разные мажорные версии (2 и 3 соответственно) могут иметь ломающие различия в api.
    Ответ написан
    Комментировать
  • Как написать простейший webpack loader?

    bingo347
    @bingo347
    Crazy on performance...
    Первое, что нужно здесь понять, то что лоадер работает в compile-time, а Ваш js код где require - в run-time.
    Лоадер получает на вход исходный текст файла (или текст выданный предыдущим лоадером) и выдает свой текст на выход. Последний лоадер (в цепочке лоадеров webpack он стоит первым) должен выдавать валидный js.
    Ваш лоадер конечно может сгенерировать в выходном файле функцию, но на процесс компиляции она уже повлиять особо не сможет.
    Ответ написан
    Комментировать
  • Как передать в функцию require() переменную?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Ты же понимаешь, что вот это вот {src: require('@/assets/file/1.jpg')} происходит на этапе сборки и в код попадает уже что-то типа:{src: '/img/1.fd5gdf.jpg'} или там {src: 'data:image/jpeg;base64,...'}
    (точнее в что-то типа, {src: a("18c2")}, которое возвращает уже соответственно '/img/1.fd5gdf.jpg' или 'data:image/jpeg;base64,...', т.е. результат обработки require('@/assets/file/1.jpg'))
    Переменная testже становится действительна только во время исполнения.

    Можно использовать частичные пути вида {src: require(`@/assets/file/${test}.jpg`)}, но никакой магии тут всё равно нет: в таких случаях webpack просто обрабатывает require для всех файлов по маске @/assets/file/*.jpg(что может сильно раздуть размер бандла если в папке много лишнего мусора) и заменяет require(`@/assets/file/${test}.jpg`) на соответствующую условную конструкцию с применением переменной test.

    Делая же так: {src: require(test)} ты не даёшь webpack'у даже намёка, на то что бы там следовало грузить и откуда.
    Ответ написан
    Комментировать
  • Каким образом можно минифицировать хеш для имени файла?

    @rPman
    Лучший способ - имя = номер версии, т.е. буквально каждое изменение файла увеличивает номер на единицу (если к имени файла не добавлять его строковое, то нумерация на весь проект будет общая), для этого на этапе сборки файлов придется хранить и подменять настоящие имена их номерами (в этом файле храни не только имя и номер но и хеш, уже длинный, по нему проверяй изменение файла и инициируй выдачу следующего номера).

    Так же номер можно паковать в другую систему счисления с основанием больше 10 (добавив большие маленькие буквы, как это делают в base64)

    В этом случае имя файла не превысит 4-5 символов плюс расширение (от него тоже можно избавиться, если сборка будет подготавливать конфиг для вебсервера, чтобы статика возвращала правильные заголовки content-type, но это кстати часто и не требуется)
    Ответ написан
    Комментировать