Эта статья является частью наших планов, связанных с groceristar-fetch, также известным как плагин статических данных о продуктах питания.

Чтобы не запутаться, пожалуйста, прочитайте

Основной план

  • у нас будет лучшее имя для пакета, который хранит статические данные о еде
  • его будет легче тестировать и компилировать.
  • у него будет только одна функция: хранить статические файлы и возвращать данные из них
  • Пример: несколько дней назад Мария обновляла файлы JSON, и сборка выдала ошибку. И это хорошая ситуация, потому что у нас есть несколько тестов, которые посылают нам сигналы тревоги. Но это можно сделать более автоматически и интуитивно. Разделение также делает код менее запутанным.
  • это даст нам дополнительные преимущества в виде продвижения и рекламы.
  • это поможет нам с переходом нашего плагина в следующую основную версию
  • это будет меньше сбивать с толку нашу команду машинного обучения, которая сейчас работает со скриптом OCR.
  • https://medium.com/groceristar/ocr-project-part1-simple-introduction-ab7b64bf1864
  • https://medium.com/groceristar/ocr-project-part2-details-85739239f42
  • https://medium.com/groceristar/ocr-project-part3-links-collection-2cfc58904caf

Прежде чем у нас появится еще одно репо, в котором хранится старый код, мы переместим его в плагин fetch. npm-ссылка, github

На первом этапе это было просто отдельное хранилище статических файлов.

Затем мы начинаем добавлять другие методы, а затем перемещаем все в наш текущий репозиторий. Если мы пойдем по пути разделения — я предлагаю перенести наши данные в этот репозиторий. Но нам нужно очистить его и обновить файлы JSON. А затем подключите этот плагин с помощью плагина fetch.

Боковые примечания:

  1. Я нахожу несколько классных плагинов, например https://www.npmjs.com/package/gray-matter.
  2. это может помочь нам с методами анализа. У него есть некоторые пересечения с другим проектом, который я хочу построить, так что, возможно, нам стоит его тоже пересмотреть и решить, использовать его или нет прямо сейчас.
  3. Я предполагаю, что мы можем создать отдельный файл, который будет обрабатывать импорт всех файлов.
  4. как мы сделали с getRawFiles
  5. Для плавного перехода — добавляем новый слой для соединения наших файлов #177

План

  1. Обсудите текущий план. Решите, когда начать работать над этим
  2. Просмотрите/сравните данные, которые у нас есть в репозитории static-data, и извлеките их. Можем ли мы удалить все из статических данных и переместить наши файлы?
  3. какое минимальное влияние мы должны оказать на static-data? Основной целью этого репозитория будет возврат данных из файлов. Но стоит ли добавлять Babel, сборки, тесты и т.д.? Было бы здорово сохранить его как можно более чистым, но я думаю, что можно использовать методы JS по умолчанию, такие как `parser`, а также получать и базовое покрытие тестов.
  4. обсудим, какие методы мы перенесем в static-data. Мне нужен полный список, прежде чем мы начнем это делать. это сэкономит нам время. нам также нужно выяснить, какие тесты следует переместить. Я предполагаю, что будет легко понять, когда у нас будет полный список методов, которые мы перемещаем — поэтому мы переместим все тесты, связанные с этими методами…
  5. убираем данные, запускаем все тесты, публикуем на npm обновление. подключите его к fetch и запустите fetch-тесты, чтобы понять, что все работает, как было раньше.
  6. должны ли мы обновить документацию, readme, документацию на веб-сайте?

Следующая цель: трудно проверить структуру файла JSON, когда мы работаем с ним вручную. Я устанавливаю плагин `jsonlint` и в корне пакета у нас есть файл конфигурации для него. Сейчас я добавляю только `grocery.json`, но я предполагаю, что мы добавим все наши файлы в этот файл и запустим проверки. Работает только из CLI или на сборках Travis CI. Выдает ошибку, когда что-то не так.

Существует множество различных библиотек, которые работают с файлами json. Нам нужно попробовать некоторые из них и сохранить несколько, что сэкономит время и упростит наши основные методы. Нам также нужно проверить, хорошо ли наши файлы json работают со спецификацией JSON5. Модули, работающие со схемами, такие как jest-json-schema, тоже могут нам помочь.

Проекты для проверки