在节点模块文件夹中编辑react npm模块的代码

时间:2018-07-18 15:02:15

标签: reactjs npm frontend node-modules

是否可以在modules文件夹中更改npm模块的代码?我认为这不是推荐的做法,还有其他方法可以实现吗?目前,我尝试更改模块目录中的代码,但更改似乎并不适用。提前致谢。

3 个答案:

答案 0 :(得分:5)

您当然可以更改node_modules中软件包的内容,因为它是标准格式。但是,您不应该这样做,因为您应该提交更改并重新分发。

不幸的是,解决这个问题的方法并不简单,这是我过去一直在努力的事情。

npm链接

第一种方法是在本地克隆存储库,并使用npm link在您的项目中使用它。

npm link ../path/to/my/proj

此方法的缺点是,您仍然必须手动下载存储库才能使用它,并且npm link使链接版本 the 包可以在系统上全局使用,这可能是意料之外的副作用。话虽这么说,npm link可能是最好的方法,如果您想在本地测试对程序包的更改并将其贡献给上游。

使用分叉的git仓库

您还可以通过以下操作直接从叉状git存储库中安装它:

npm install --save $GIT_REPO_URL

但是,使用这种方法时,您需要具有访问git repo的凭据,因此,在处理私有存储库等时,尤其是在处理CI环境时,会带来额外的复杂性。另外,您应该包含一个commitish,以便您可以获取可复制的内部版本;但是,在不使用npm链接的情况下进行开发很麻烦。 You can consult the npm documentation for other install options or for more specifics如果您不必担心任何这些事情,这是一个很好的方法。

本地npm模块

完成更改后,还可以像这样将分叉的版本安装到项目中:

npm install --save ../path/to/my/proj

但是,然后,您将有效地使另一个NPM项目成为项目的一部分,并使用git子模块,git子树或使用monorepo。对于团队来说,这可能是一个很好的方法,但是对于您要尝试做的事情来说,这可能是过大的选择,并且您需要认真思考很多工具才能使它成为一个好的方法。

发布您自己的npm模块

不幸的是,所有现有方法都假设这些软件包没有构建过程,或者它们是使用npm's postinstall scripts之类的东西自动构建的。但是,某些npm模块是通过发布特定的构建目录编写的,这使得npm上的内容与源代码显着不同。

在这种情况下,您需要将内部版本发布到npm可以从其安装的位置。这包括公共scoped package,私有npm存储库或将npm模块发布到个人工件服务器之类的东西。

答案 1 :(得分:1)

不建议直接在node_modules中修改软件包,因为重新安装软件包时更改将消失,并且您无法与他人共享更改。考虑例如在GitHub上分叉该项目并在那里进行更改,然后将其用作软件包。

如果您只想尝试,它仍然可以修改node_modules中的软件包。如果包的main的{​​{1}}字段指向构建文件,则您可能不得不将此字段更改为源条目文件,或者在源代码每次更改后自行构建文件。

答案 2 :(得分:1)

对我来说,最好的方法是,就像@Kevin Raoofi 所说的那样,克隆包并发布我自己的包,然后将我的包下载到特定文件夹中,其中只有“myNpmPackages”。

那么:

  • 在您的项目中,安装您的克隆
  • 在您的 json 中输入“*”,以便始终更新 pkj
  • 编辑包(在“myNpmPackages”文件夹中)
  • 更改版本号
  • npm 发布
  • 在你的项目中,npm install