@react_js

Страница 95 из 5115
Anton
11.05.2016
13:30:40
Мне один раз тоже такое пригодилось, кстати.

Но это была зависимость по нормальному имени, не относительному пути.

Nikita
11.05.2016
13:31:11
форк - означает его поддержку

я не хочу поддерживать весь форк, мне нужно переопределить 1 файл

Google
Anton
11.05.2016
13:32:46
Относительный путь - это значит что ты хочешь часть либы поменять. Та, которую авторы не предполагали отделять как-либо от либы. А для этого есть правильный путь и тот что ты хочешь прикрутить. Нет разницы поддерживать файл или форк :) У тебя твой файл будет ломаться и требовать фиксов/поддержки с точно таким же интервалом как и форк :)

по сути ты точно так же поддерживаешь файл

Anton
11.05.2016
13:33:18
Так а в чем сложность поддерживать форк?

Просто мерджить его с оригинальным репозиторием периодически

Nikita
11.05.2016
13:35:09
на самом деле все не так)

Anton
11.05.2016
13:35:12
файл - обновляешь зависимость, чинишь если поломалось. Форк - мержишь апстрим (обновляешь зависимость), чинишь что поломалось, пушишь, обновляешь зависимость в аппе Если последние два действия очень напрягают то да, сложно. Если нет, то легко

Nikita
11.05.2016
13:35:17
я автор либы и именно так хочу сделать ее изменение

представь библиотеку компонентов, это не так, но представь

вот я хочу дать возможность переопределить кнопку

другие компоненты тоже могут использовать кнопки, внутри библиотеки

Artur
11.05.2016
13:36:37
А в чем проблема тогда сделать для этого прогаммный интерфейс?

Зачем через webpack'и это делать, когда существуют более подходящие практики для этого?

Nikita
11.05.2016
13:38:05
например? проект же ты вебпаком собираешь

Google
Anton
11.05.2016
13:38:52
то что ты хочешь, должно быть заложено в либе в какой-либо форме. Например можешь заложить возможность менять это программно, можешь заложить возможность менять это вебпаком (подключать специально через алиасы например, чтобы пользователь либы мог их переопределить)

Artur
11.05.2016
13:39:36
Так продумай интерфейс для переключения нужного компонента. Не знаю, там setComponentLayer(new CustomComponentLayer)?

Anton
11.05.2016
13:39:39
Ты говоришь о том что либа для этого не предназначена, но хочется извратиться и заставить. Примерно с тем же успехом ты можешь регэкспом менять в собранном файле нужные строчки :)

Nikita
11.05.2016
13:39:54
программный интерфейс предполагает ограничения

если я что-то не запрограммирую - это невозможно переопределить

Anton
11.05.2016
13:40:22
Но ты хочешь поменять модуль

Artur
11.05.2016
13:40:28
Это в принципе нельзя переопределить, если ты это не запрограммируешь)

Anton
11.05.2016
13:40:32
ну смотри, у тебя по дефолту используется lodash

Artur
11.05.2016
13:40:36
Модуль же что-то делает

Anton
11.05.2016
13:40:44
любой интерфейс предполагает ограничения. Если ты хочешь возможность менять либу без ограничений - я тебе уже сказал как это правильно делается ;)

Anton
11.05.2016
13:40:45
Но у либы есть метод, типа setLibrary

Artur
11.05.2016
13:40:50
Ты хочешь переопределить его стандартное поведение.

Или расширить

Anton
11.05.2016
13:41:08
И ты можешь в него передать underscore или еще чего

Nikita
11.05.2016
13:41:08
ребята, вы что-то сложное говорите)

вот есть кнопка

тупая

у нее известен интерфейс

есть библиотека UI, которая использует эту кнопку

и таких компонентов "кнопок" 100шт еще разных

Google
Artur
11.05.2016
13:41:52
Таак

А в чем проблема?

Nikita
11.05.2016
13:41:58
так вот мне нужно понять, как в вебпак прокинуть пути для переопределения вот и все)

Artur
11.05.2016
13:42:17
theme-style?

Если тебе надо переопределять что-то вроде темы (одна кнопка заменяется другой и т.п.), то тогда есть смысл определять некий параметр current theme и от него собирать.

Nikita
11.05.2016
13:43:53
кнопка - это пример. Это может быть что угодно. То, как выглядит сообщение, например

Artur
11.05.2016
13:44:00
Я так понимаю, у тебя должна быть структура типа themes/ A/ /button.jsx B/ /button.jsx

Anton
11.05.2016
13:44:20
Мне кажется, что ты пытаешься сделать что-то очень странное

Допустим, у тебя есть либа

Artur
11.05.2016
13:44:29
А ты вот хочешь что-то вроде THEMEID=A webpack ...

Anton
11.05.2016
13:44:30
классический разговор в духе "не говорите мне что для получения ежа не надо слона на кактус натягивать, лучше расскажите как бы так натянуть чтоб слон не плакал" )

Artur
11.05.2016
13:44:53
?

Nikita
11.05.2016
13:45:34
ох)

Anton
11.05.2016
13:45:39
Наверняка у твоей задачи есть более нормальные решения. Но если ты хочешь решать ее именно так - то никто тебя конечно не остановит )

Anton
11.05.2016
13:45:43
А которой есть кнопка, типа someLibrary.button. Как выходит, что ты не можешь просто сделать someLibrary.button = anotherButton

Nikita
11.05.2016
13:45:48
в общем вы не знаете как в вебпаке это переопределить - ок, не вопрос)

Grigory
11.05.2016
13:46:00
ну так вот самое просто и логичное это программный интерфейс lib.init({ button: require('./my-own-elephant-button.js') })

Nikita
11.05.2016
13:46:44
ну так вот самое просто и логичное это программный интерфейс lib.init({ button: require('./my-own-elephant-button.js') })
так сейчас и сделано. Но это не гибко. Таким образом можно переопределить только те компоненты, которые прописаны

Anton
11.05.2016
13:46:48
в общем вы не знаете как в вебпаке это переопределить - ок, не вопрос)
Ты можешь написать свой резолвер, если стандарные возможности не подходят. Ультимейт солюшен.

Google
Nikita
11.05.2016
13:47:10
так я спросил - есть ли стандартная возможность)))

написать понятно, что можно

Anton
11.05.2016
13:47:52
если ты автор либы - юзай алиасы прямо в ней, самое простое решение

алиасы саму на себя

Artur
11.05.2016
13:47:59
А тебе принципиально в сборке не нужны другие компоненты, как я понял?

Т.е. тебе нужно все это на уровне сборки собрать, чтобы лишнего не было?

Nikita
11.05.2016
13:48:36
это скорее плюс такого подхода, а не самоцель

цель - дать возможность переопределить вообще что угодно

Artur
11.05.2016
13:49:05
На уровне сборки?

Nikita
11.05.2016
13:49:09
да

Admin
ERROR: S client not available

Anton
11.05.2016
13:49:16
это вредная утопия )

Nikita
11.05.2016
13:49:18
на уровне рантайма сейчас есть

и это не удобно

а ты что предлагаешь?)

Artur
11.05.2016
13:49:56
Я бы предложил темы.

Nikita
11.05.2016
13:50:09
тема - это ограниченная штука

Anton
11.05.2016
13:50:15
как минимум это "все что угодно" должно быть ограничено.

Nikita
11.05.2016
13:50:28
вот есть сообщение - тут можно кучу вещей изменить

Artur
11.05.2016
13:50:31
Есть у тебя структура проекта, ты ее можешь дублировать в themes/custom директории по именам сборок, например.

Google
Artur
11.05.2016
13:50:50
И подсасывать от туда.

Nikita
11.05.2016
13:50:57
не, это sdk

Artur
11.05.2016
13:50:59
Хотя я все равно не понимаю, зачем это на уровне сборки.

Nikita
11.05.2016
13:51:06
то есть подтягивается как npm модуль

потому что на уровне рантайма это надо учитывать во время разработки

Anton
11.05.2016
13:51:20
А что именно "что угодно" для тебя?

Anton
11.05.2016
13:51:21
Это чревато как минимум тем, что если код, который требует этой либы, будет абсолютно непонятен никому, кроме тябя

Nikita
11.05.2016
13:51:38
наоборот код становится чище

вот смотрите

я пишу require('../common/Button')

дальше кто-то идет и переопределяет этот button на уровне сборки

Grigory
11.05.2016
13:52:27
Я так понимаю в этом типо и смысл захотел любую зависимость любой либы локально заменил получил интерфейс и дальше делай и говнокодь у себя в проекте как хочешь

Nikita
11.05.2016
13:53:15
вот ща хороший пример покажу

Artur
11.05.2016
13:53:27
Давай

А то прям вообще не понятно.

Nikita
11.05.2016
13:53:46
смотрите

есть babel-runtime

как babel предлагает оверайтить его

require('babel-runtime/core/promise').default = require('bluebird')

вот вы мне тоже самое предлагает

а я хочу это на уровне сборки. Что в этом желании не нормального?

Artur
11.05.2016
13:55:35
Ну ок, теоретически идею понял. Хотя, скажем так, у babel реализация тоже корявая.

Тогда тебе нужна некая карта переопределения и резолвер.

Страница 95 из 5115