Я пишу специальный шаблон Ember, который выводит различные поля компонентов, основанные на модели данных Ember, переданной команде ember g <blueprint> <modelname>
.
Однако, пытаясь разобрать файл модели, как Javascript трудно. Причина в том, что они работали в среде CommonJS Node, пытаясь импортировать модуль ES6. Даже если мы используем библиотеку синтаксического анализа ES6, импортированную из npm
, тогда мы не можем разрешить поиск путей импорта модели из этого контекста.
Следующий подход состоял в том, чтобы попытаться импортировать сгенерированный файл Javascript в папку dist (например, dist/my-first-blueprint.js
). Это структура AMD для модулей, и ни один из легко доступных модулей AMD npm
позволяет легко использовать этот файл.
Предположительно, добавлен код, добавленный в dist/vendor.js
который позволяет Ember Resolver находить модуль с правильной ссылкой. Тем не менее, это мое знание цепи сборки Брокколи и внутренних элементов Ember не дает мне возможности.
Последним вариантом является анализ файла Javascript в виде текста с использованием сопоставления с образцом. С комбинациями mixins, разных корневых классов и других дисперсий это определенно нетривиально и является тем, что было отложено на отдельный Blueprint.
Кто-нибудь знает какие-либо идеи или подсказки о том, как в файле index.js
я могу импортировать модель Ember Data и определить ее атрибуты?
Вы можете использовать recast
для анализа дерева аш.
var fs = require('fs-extra');
var fileName = <path-to-model> ;
var source = fs.readFileSync(fileName, 'utf-8');
var recast = require('recast');
var ast = recast.parse(source);
Этот код может анализировать файл. После того, как вы получите ast, пройдите через него, чтобы получить атрибуты модели. Вы можете использовать ави.