如何持久保存在node_modules中所做的更改?

时间:2019-09-07 10:46:25

标签: javascript reactjs node-modules

我正在使用Card中的react-native-elements,并且摆脱了

{image && ..... <BackgroundImage .....

部分是因为我想在下载图像之前添加一个占位符图像(活动指示器),以便在图像淡入之前我不会只是看到空白区域。

无论如何,我用另一个组件替换了该部分,但它碰到了我-我的.gitignore忽略了/node_modules。如果我要像对Card那样进行更改,然后购买新计算机并克隆我的存储库,则运行npm install不会给我npm模块所做的更改。

我该如何解决?我不想推送整个node_modules目录。另外,我考虑过只基于Card来制作自己的组件,但是它有太多的依赖关系和导入,如果我不打算解析和复制到我的项目中,我也不想参与其中。必须。

3 个答案:

答案 0 :(得分:1)

由于所描述的原因,您永远不要对node_modules进行更改,您的更改只是临时的,如果您决定更新依赖项,您的更改将丢失。

根据您更改代码的原因,您可以执行其他操作:

  • 如果这是一项功能,则可以请求它来制作它们,或为它们打开拉动请求
    • 如果是bug,请为他们打开一个bug,或再次提出请求以解决该问题

如果要进行持久化更改,则必须基于自己的库(假设他们的许可证允许您这样做),这是一个非常糟糕的选择,您将丢失所有自动更新,并且错误修复。

您应该做的是建议,应该在其组件上构建一个包装器组件,在这种情况下,您将不添加任何新的依赖项(除非您决定构建,否则它们将始终使用这些依赖项)从头开始使用它们的依赖关系创建组件,在这种情况下,这不是包装程序组件,而是一个全新的组件,如果可以包装它们的组件来实现所需的功能,则避免使用此选项)

答案 1 :(得分:0)

我们已通过创建update_note_modules.sh(shell可执行文件)文件并在每次安装npm / yarn后运行此文件来解决此问题

步骤1:将代码副本从node_modules保存到主应用程序文件夹中。我们已经创建了“核心”文件夹,并将副本保存在其中

enter image description here

第2步:创建update_note_modules.sh文件

enter image description here

文件代码

echo "Updating react-native-dropdownalert"
cp core/react-native-dropdownalert/DropdownAlert.js node_modules/react-native-dropdownalert/DropdownAlert.js

echo "node_modules updated"

注意:路径将根据您的项目而改变

第3步:每次安装npm / yarn后运行update_note_modules.sh

只需将文件路径粘贴到终端中,然后按Enter键即可执行文件

/path to file/update_note_modules.sh

答案 2 :(得分:0)

我会在这里推荐https://github.com/ds300/patch-package;制作补丁并将其一致地应用于node_modules中的事物。对于从未推送到某些版本的软件包的修复程序通常很有用。