-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Do not build graph by default #357
Conversation
495a954
to
ca744e5
Compare
@blond @SwinX
|
@@ -64,9 +64,6 @@ module.exports = inherit({ | |||
setTargetsToClean: function () { | |||
throw new Error('Method `setTargetsToClean` is not implemented.'); | |||
}, | |||
setBuildGraph: function () { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Наверное, надо поправить это и в mock-enb
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А mock-enb
разве не собираются закопать? Или я что-то путаю?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Пока на нем написана куча тестов - нет. В перспективе - возможно да
@j0tunn крутяк! 💥 |
Понимаю, что перенос Можно добавить ноду без графа в файл Или |
что именно я этим кому-то могу сломать? |
var Node = require('./node'); | ||
var NodeWithGraph = require('./node-with-graph'); | ||
|
||
exports.mk = function (nodePath, makePlatform, cache, graph) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Выглядит совсем не как публичное API.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
всмысле? Это просто фабричный метод
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мне не нравится, что добавляется новое API, которое выглядит как публичное, но публичным не является.
Да и особой пользы от такого метода не вижу.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это не публичное API, и я не пойму что значит "выглядит как публичное"
Да и особой пользы от такого метода не вижу.
Это паттерн проектирования "Фабричный метод", он позволяет инкапсулировать логику по выбору конкретной реализации, и при этом предоставляет общий интерфейс для работы с объектом. Пользователю этого метода пофигу какой конкретно объект будет создан, главное, что у него будет нужный API. Он вообще может не знать, что там разные объекты для разных аргументов создаются.
В данном конкретном случае я унес логику по выбору объекта с графом/без графа из makePlatform.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@j0tunn Если это единственная функция в модуле, может её экспортировать как module.exports = function() {};
?
Если рекваерить класс
Можно сделать это изменение не ломающим. Если вызывать через CLI — при опции Через API точно так же, если передать опцию А если подключать |
Андрюх, зачем все эти сложности с обратной совместимостью? Ты имеешь ввиду какие-то конкретные пакеты, которые реквайрят |
Пользователи ENB привыкли к тому, что ничего не ломается от версии к версии. Кажется, что сделать изменения обратно совместимыми совсем не сложно, просто будет чуть менее красиво, и кажется, тут легко можно этим пожертвовать. До версии Кроме того, для написания своих технологий считается нормально подключать что угодно из Поэтому нужно считать всё что лежит в |
я не нашел ни одного репозитория, где бы подключалась node из enb. Пролистал все 334 результата по запросу
ты не путай теплое с мягким, мне пофиг насколько красиво выглядит код, мне важно качество, а качеством кода я жертвовать не собираюсь
придется отвыкать, иначе не получится сделать конфетку, |
Почему не делать много изменений, ломающих обратную совместимость в рамках |
Как выглядит публичное API начиная с версии |
@@ -325,9 +332,9 @@ module.exports = inherit( /** @lends MakePlatform.prototype */ { | |||
var _this = this; | |||
var cdir = this.getDir(); | |||
var nodeConfig = this._projectConfig.getNodeConfig(nodePath); | |||
var node = new Node(nodePath, this, this._cache); | |||
var node = Node.mk(nodePath, this, this._cache, this._graph); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
var createNode = require('lib/node');
// ...
var node = createNode(nodePath, this, this._cache, this._graph);
Ну или nodeFactory
вместо createNode
.
М?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
когда модуль сразу экспортит функцию - это сложнее тестировать (не получится застабать, нужно плясать с бубном и чем-то типа proxyquire
)
Отписал замечания. |
Для адекватного тестирования Node.prototype.resolveTarget.apply(this, arguments); вместо простого вызова |
Пока переписал на |
1e1a69f
to
9cc6277
Compare
9cc6277
to
132a6cb
Compare
Предлагаю вливать, а в |
132a6cb
to
bbb78f3
Compare
отрибейзился |
👍 |
There are two changes:
if (this._graph)
checks