如何将npm软件包文件复制到我的本地项目?

时间:2018-09-07 07:10:11

标签: javascript npm

这可能是一个重复的问题,但是无论我如何尝试都找不到我想要的答案。所以,我问。

我想要的东西:

将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 :(得分:0)

以下是您的一些选择:

解决方案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::使用一个库来修补您的组件,以下是此类库的一些示例: