当然你可以改变包的内容node_modules
因为它是标准化格式。但是,您不应该这样做,因为您应该提交更改并重新分发它们。
不幸的是,解决这个问题的方法并不简单,这是我过去一直在努力解决的问题。
npm link
第一种方法是在本地克隆存储库并使用npm link
在您的项目中使用它。
npm link ../path/to/my/proj
这种方法的缺点是您仍然需要手动下载存储库才能使用它并且npm link
制作您的链接版本the在您的系统上全局使用的包可能会产生意想不到的副作用。话虽如此,npm link
如果您想在本地测试对包的更改并将其贡献给上游,这可能是最好的方法。
使用分叉的 git 存储库
您还可以通过执行以下操作直接从分叉的 git 存储库安装它:
npm install --save $GIT_REPO_URL
但使用这种方法,您需要拥有访问 git 存储库的凭据,因此当您处理私有存储库等时,特别是在处理 CI 环境时,会产生额外的复杂性。另外,您应该包含一个提交,以便您可以获得可重复的构建 - 不过,在不使用 npm 链接的情况下开发它有点痛苦。您可以查阅 npm 文档以了解其他安装选项或更多具体信息 https://docs.npmjs.com/cli/install. 如果您不必担心这些事情,那么这是一个非常好的方法。
本地 npm 模块
完成更改后,您还可以将分叉版本安装到您的项目中,如下所示:
npm install --save ../path/to/my/proj
但是,然后,您可以通过 git 子模块、git 子树或使用 monorepo 等方式有效地将其他 NPM 项目作为您项目的一部分。对于团队来说,这可能是一个好方法,但对于您想要做的事情来说可能有点过分了,而且您需要考虑很多工具才能使其成为一个好方法。
发布您自己的 npm 模块
不幸的是,所有先前的方法都假设这些包要么没有构建过程,要么使用类似的东西自动构建npm 的安装后脚本 https://docs.npmjs.com/misc/scripts。然而,一些 npm 模块是通过发布特定的构建目录来编写的,这使得 npm 上的内容与源代码有很大不同。
在这些情况下,您需要将构建发布到 npm 可以安装的位置。这包括诸如公共场所之类的事情范围包 https://docs.npmjs.com/getting-started/scoped-packages、私有 npm 存储库,或将您的 npm 模块发布到个人工件服务器。