Nano Hash - криптовалюты, майнинг, программирование

Исключить файлы из require.context Webpack

Я пытаюсь включить в require.context Webpack все файлы, которые должен освещать мой репортер в Стамбуле.

Я хотел бы включить/требовать все файлы под app, которые не имеют расширения .test.js.

// internals/testing/test-bundler.js
const context = require.context('../../app', true, /^.*(?!(\.test|internals.*))\.js$/);
context.keys().forEach(context);

Моя структура файлов:

app/components/
app/containers/
app/decorators/
app/orm/
app/pages/
app/store/
app/tests/
app/utils/
app/app.js
app/reducers.js
app/routes.js
internals/testing/test-bundler.js

Очевидно, что мое регулярное выражение не работает, потому что в отчете о покрытии я вижу все файлы .test.js и даже файл internals/testing/test-bundler.js.

Что я делаю не так?

28.06.2016

Ответы:


1

Вы должны знать, после какой части отрицательный прогноз использует свое отклонение. Если вы делаете это сразу после первой косой черты, все работает нормально.

И при этом вы хотите отклонить .*test после косой черты, а не только test непосредственно за ней.

/^(?!internals).*\/(?!.*test).*\.js$/

Или, точнее, запретить использование internals в имени пути.
Не заканчиваться на test.js:

^(?!.*(?:internals|test.js$)).*\.js$
28.06.2016
  • при тестировании путей из его образца ваши ответы возвращают только app/app.js ? 28.06.2016
  • Он вернет пути в любом каталоге, но не в internals/*. И у них не будет test после первой косой черты. Так что в этом смысле test/internals.js все равно пройдет. но это легко изменить в регулярном выражении. 28.06.2016

  • 2

    Как насчет простой фильтрации ваших путей с помощью простого использования filter ?

    Скрипка:

    var paths = [
    'app/components/',
    'app/containers/',
    'app/decorators/',
    'app/orm/',
    'app/pages/',
    'app/store/',
    'app/tests/',
    'app/utils/',
    'app/app.js',
    'app/reducers.js',
    'app/routes.js',
    'internals/testing/test-bundler.js',
    'app/blablabla.test.js'
    ];
    
    var result = paths.filter(function(e,i){
       return (e.startsWith('app/') && !e.endsWith('.test.js'))
    });
    
    for(var i = 0; i < result.length; i++)
       console.log(result[i]);
      

    28.06.2016

    3

    Даже если исключить node_modules из require.context, webpack все равно будет рекурсивно просматривать каталоги, что занимает много времени. Я столкнулся с кучей памяти в аналогичном случае.

    Я думаю, что лучше не устанавливать node_modules для каждого модуля. Но оставьте node_modules другое место и укажите местоположение в wepback module.resolve. Сохраняйте исходный код и зависимости отдельно.

    02.09.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..