Эта статья является частью наших планов, связанных с groceristar-fetch, также известным как плагин статических данных о продуктах питания.
Чтобы не запутаться, пожалуйста, прочитайте
- введение (https://medium.com/groceristar/groceristar-fetch-small-module-that-weve-created-8b4a62bd5d7b)
- первая часть(https://medium.com/groceristar/food-static-data-plugin-list-of-big-steps-66265919df0f)
- вторая часть(https://medium.com/groceristar/static-food-data-plugin-transition-to-es6-559d0d941ec6)
- третья часть(https://medium.com/groceristar/static-food-data- Third-Part-structu-615c39dcf328)
Основной план
- у нас будет лучшее имя для пакета, который хранит статические данные о еде
- его будет легче тестировать и компилировать.
- у него будет только одна функция: хранить статические файлы и возвращать данные из них
- Пример: несколько дней назад Мария обновляла файлы 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.
Боковые примечания:
- Я нахожу несколько классных плагинов, например https://www.npmjs.com/package/gray-matter.
- это может помочь нам с методами анализа. У него есть некоторые пересечения с другим проектом, который я хочу построить, так что, возможно, нам стоит его тоже пересмотреть и решить, использовать его или нет прямо сейчас.
- Я предполагаю, что мы можем создать отдельный файл, который будет обрабатывать импорт всех файлов.
- как мы сделали с getRawFiles
- Для плавного перехода — добавляем новый слой для соединения наших файлов #177
План
- Обсудите текущий план. Решите, когда начать работать над этим
- Просмотрите/сравните данные, которые у нас есть в репозитории static-data, и извлеките их. Можем ли мы удалить все из статических данных и переместить наши файлы?
- какое минимальное влияние мы должны оказать на static-data? Основной целью этого репозитория будет возврат данных из файлов. Но стоит ли добавлять Babel, сборки, тесты и т.д.? Было бы здорово сохранить его как можно более чистым, но я думаю, что можно использовать методы JS по умолчанию, такие как `parser`, а также получать и базовое покрытие тестов.
- обсудим, какие методы мы перенесем в static-data. Мне нужен полный список, прежде чем мы начнем это делать. это сэкономит нам время. нам также нужно выяснить, какие тесты следует переместить. Я предполагаю, что будет легко понять, когда у нас будет полный список методов, которые мы перемещаем — поэтому мы переместим все тесты, связанные с этими методами…
- убираем данные, запускаем все тесты, публикуем на npm обновление. подключите его к fetch и запустите fetch-тесты, чтобы понять, что все работает, как было раньше.
- должны ли мы обновить документацию, readme, документацию на веб-сайте?
Следующая цель: трудно проверить структуру файла JSON, когда мы работаем с ним вручную. Я устанавливаю плагин `jsonlint` и в корне пакета у нас есть файл конфигурации для него. Сейчас я добавляю только `grocery.json`, но я предполагаю, что мы добавим все наши файлы в этот файл и запустим проверки. Работает только из CLI или на сборках Travis CI. Выдает ошибку, когда что-то не так.
Существует множество различных библиотек, которые работают с файлами json. Нам нужно попробовать некоторые из них и сохранить несколько, что сэкономит время и упростит наши основные методы. Нам также нужно проверить, хорошо ли наши файлы json работают со спецификацией JSON5. Модули, работающие со схемами, такие как jest-json-schema, тоже могут нам помочь.
Проекты для проверки
- Спецификация JSON5: https://json5.org/
- Файл Nodejson: https://github.com/jprichardson/node-jsonfile
- Загрузить-json-файл: https://github.com/sindresorhus/load-json-file
- Парс-json: https://github.com/sindresorhus/parse-json
- Серое вещество: https://www.npmjs.com/package/gray-matter
- Удивительный список JSON: https://github.com/burningtree/awesome-json
- Лямбда JSON: https://github.com/chrisdone/jl
- JSON ODM: https://github.com/konsultaner/jsonOdm