Как скопировать файлы пакета npm в мой локальный проект? - PullRequest
0 голосов
/ 07 сентября 2018

Это может быть повторяющийся вопрос, но я не мог найти ответ, который хотел, независимо от того, как я пытался его найти.Итак, я спрашиваю.

Что я хотел:

Переместить файл в node_modules в мой проект, чтобы я мог использовать его при редактировании файла

enter image description here

Первая попытка:

Переместил файл, который я хотел отредактировать, и изменил только путь импорта для этого файла enter image description here enter image description here

результат:

enter image description here

странно:

Все измененные пути правильны

т.е. я могу перейти к этому импортированному файлу через этот путь в IDE.

enter image description here

Пример репо:

https://github.com/YahngSungho/dfsfdsfsfdsfwfsd/tree/help/npmToLocal1 Особенно: https://github.com/YahngSungho/dfsfdsfsfdsfwfsd/tree/help/npmToLocal1/src/components/editableText

Вторая попытка:

Я также переместил все импортированные файлыкак файл, который я хочу изменить, в проект.

enter image description here

результат:

enter image description here

enter image description here

Мое мнение: Кажется, это связано с Typescript или commonjs.Но я не знаю, как заставить это работать.

Пример репо: https://github.com/YahngSungho/dfsfdsfsfdsfwfsd/tree/help/npmToLocal2 Особенно: https://github.com/YahngSungho/dfsfdsfsfdsfwfsd/tree/help/npmToLocal2/src/components/list/editableText/components/editable-text

Если кто-нибудь знает, как решитьпроблема, я был бы очень признателен.

1 Ответ

0 голосов
/ 07 сентября 2018

Вот несколько вариантов для вас:

Решение 1: Вы можете вручную monkey-patch рассматриваемый модуль:

Вот как это сделать (общий подход):

Создать новый файл с именем ModifiedEditableText.tsx

Тогда в этом файле:

import { EditableText } from "@blueprintjs/core";

const newModule = {};

// First, copy over all the fields from the original module
for (let fieldName in EditableText) {
    newModule[fieldName] = EditableText[fieldName];
}

// Then write new implementations of any function you want to change
newModule.function1 = function(arg, arg2, arg3) {
    // new function implementation
    // To call the original function do:
    EditableText.function1();
}

export default newModule;

Решение 2: Разветвите модуль, внесите изменения, отправьте PR и надейтесь, что он объединен (вероятно, не произойдет)

Решение 3: Создайте модуль, внесите изменения и импортируйте этот модуль в свой код вместо официальной библиотеки

Решение 4: Используйте библиотеку, чтобы обезопасить ваш компонент, вот несколько примеров таких библиотек:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...