假设我有一个 Node.js 应用程序,我们称之为patched-app。这个应用程序是一个简单的应用程序,它使用提示同步来请求用户输入,然后用它来做一些事情。
所以我们创建一个文件夹patched-app并用 初始化它npm init。然后,我们运行并创建一个名为“我的代码所在位置”npm i prompt-sync的新文件。index.js为了让事情变得更有趣,我还将在这里创建一个 git 存储库,这就是结果:
+---patched-app
| | .gitattributes
| | .gitattributes
| | .gitignore
| | index.js
| | package-lock.json
| | package.json
| |
| +---node_modules
| | | .package-lock.json
| | |
| | +---ansi-regex
| | | index.js
| | | license
| | | package.json
| | | readme.md
| | |
| | +---prompt-sync
| | | index.js
| | | LICENSE
| | | package.json
| | | README.md
| | | test.js
| | |
| | \---strip-ansi
| | index.d.ts
| | index.js
| | license
| | package.json
| | readme.md
| \---.git
| <<git stuff>>
Run Code Online (Sandbox Code Playgroud)
现在的问题是我不喜欢这个prompt-sync包中的某些内容,因此我想node_modules/prompt-sync/index.js根据自己的喜好对其进行编辑和更改。我不一定想创建一个全新的模块,例如prompt-sync-swiffy(或者我吗?),因为我的更改足够小,所以我不必下载任何新的软件包prompt-sync,所以我对现有的依赖项很满意ansi-regex和strip-ansi。
我可以打开它node_modules/prompt-sync/index.js,编辑它,然后就完成了——这就是我到目前为止一直在做的事情,因为我不知道更好的了。不过,我至少认识到三个主要问题:
prompt-sync再更新,否则我可能会丢失所做的更改(丢失!==只是破坏了我修补的更改)npm audit fix等,因为这些命令也可能会覆盖我的更改node_modules如果.gitignore有人拉取我的存储库并运行npm install,它将安装prompt-sync而不需要我的更改我也不一定想要分叉prompt-sync和/或创建一个新的“官方”NPM 包。我想要的是一种允许我或其他任何人npm install正常运行的方法,同时以某种方式将我的模块补丁保留在本地,例如拥有一个module_patches不会被存储库忽略的文件夹。
prompt-sync如果新版本破坏了我的补丁也没关系。我需要更新补丁或使用锁定版本的prompt-sync.
那么我有什么选择呢?
And*_*rei 11
修补 NPM 包的一个好方法是使用patch-package。它将自动创建您的更改的补丁文件并将其应用到 postinstall 挂钩中。
| 归档时间: |
|
| 查看次数: |
5262 次 |
| 最近记录: |