DutchKevv
DutchKevv

Reputation: 1699

NPM - Fork module, change code and send PR to author

For a particular npm package I want to create a PR with some code changes.. The author of the package told me, to create a PR from a particular branch..

All fine so far, I can change the url + branch inside the package.json and load the specific branch as npm module.. Also npm install works fine.

But then I want to change some code in that node_modules/module folder and create a PR from the code changes..

The only thing I can make to work for sure, is to first fork the entire repo in a separate folder, than checkout X branch, than change code, copy/past it to the node_modules/module folder every time I wanna check my code changes.. And than push it to my personal github page, and from there create a pull request..

But its really frustrating to copy/past my changes every time to the node_modules/module folder.

What is the best way to change a npm package and create PR for it, while still keeping the code inside the node_modules folder, so code changes can be checked?

Thanks!

Upvotes: 1

Views: 592

Answers (2)

Sean Vieira
Sean Vieira

Reputation: 159905

You're looking for npm link:

$ git clone your/npm-repo-fork
$ cd npm-repo-fork

# Link the project as a local dependency
$ npm link
$ cd ../some/other/project

# Use the linked project
$ npm link name-of-npm-dependency

# Now you can edit npm-repo-fork and the changes
# will be picked up by some/other/project
$ cd ../../../npm-repo-fork

Upvotes: 1

Stavros Zavrakas
Stavros Zavrakas

Reputation: 3063

This is the proper thing to do. Fork the github repo, create the branch that the guy told you, make the changes and send a pull request.

If you want to work in parallel and assuming that there are no compilation steps that npm should do, you can clone the forked repository within your node_modules and work directly there. As soon as you will make and commit the changes then you can send the pull request.

EDIT

I would say that this can be an acceptable approach that can work on linux:

~/projects/your-project/node_modules
~/projects/your-project/node_modules/name-of-module (symlink to the ~/projects/your-forked-cloned-repo)

~/projects/name-of-module (It should be your forked repo that you 've cloned from github/assembla etc)
~/projects/node_modules (symlink to the ~/projects/your-project/node_modules)

Upvotes: 2

Related Questions