# Developing a core node by making a trial contrib node

**URL:** <https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808>\
**Category:** Core Development\
**Created:** [14 June 2018 12:33 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808 "2018-06-14T12:33:35Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [14 June 2018 12:33 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/1 "2018-06-14T12:33:35Z")

</div>

Forking a node on Github and having a play is great but difficult for other users to dynamically try out any enhancements/changes

I want to dabble with MQTT node so I was planning on forking it -making some changes and then temporarily publish as a contrib node using a name like testa\_cymplecy\_temp so its obvious that its not a finished long-term node

What do people think?

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [14 June 2018 13:04 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/2 "2018-06-14T13:04:11Z")

</div>

What is so hard about using npm with a github link to install?

That way you can also get them to install different branches if need be.  
You shouldn’t need to publish to npm if its not a finished long term node.

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [14 June 2018 13:14 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/3 "2018-06-14T13:14:33Z")

</div>

> [@ukmoose](#):
>
> What is so hard about using npm with a github link to install?

Ta for info

Its not as easy-peasy as using Manage Pallete but sounds like it could be the best solution

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [14 June 2018 15:52 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/4 "2018-06-14T15:52:10Z")

</div>

Yes. Please don’t publish unfinished nodes to the library if you can help it. Just remove the “node-red” keyword tag.

---

<div class="post-metadata">

**Author:** ![jtmoderate876](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jtmoderate876/32/6423_2.png) [@jtmoderate876](https://discourse.nodered.org/u/jtmoderate876)\
**Post date:** [6 November 2019 09:47 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/5 "2019-11-06T09:47:21Z")

</div>

Can @ukmoose, @cymplecy or someone tell me how or point me to documentation on how to use forked github branches of a node instead of the master?

For example, how can I use this forked version of Mosca mqtt-broker:

> **[martin-doyle/node-red-contrib-mosca](https://github.com/martin-doyle/node-red-contrib-mosca)**
>
> Contribute to martin-doyle/node-red-contrib-mosca development by creating an account on GitHub.

instead of the original node-red-contrib-mosca?

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [6 November 2019 10:14 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/6 "2019-11-06T10:14:42Z")

</div>

I usually end up on this

> <https://stackoverflow.com/questions/17509669/how-to-install-an-npm-package-from-github-directly>

when I google for it every few months which is a bit old but end result I end up using is

```auto
npm install https://github.com/{USER}/{REPO}#{BRANCH}

```

e.g. I just did

```auto
npm install https://github.com/bartbutenaers/node-red-contrib-blockly#release-1.2.0

```

and it installed the 1.2.0 branch

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/8/88eab0e57d3e62580e07c08a61edaeab7c653b25.png)

So if you fork a repo - you just use your user and repo name instead or original author  
_Sorry for the mistakes - should be ok now_ 🙂

---

<div class="post-metadata">

**Author:** ![jtmoderate876](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jtmoderate876/32/6423_2.png) [@jtmoderate876](https://discourse.nodered.org/u/jtmoderate876)\
**Post date:** [6 November 2019 10:20 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/7 "2019-11-06T10:20:18Z")

</div>

Thank you much @cymplecy !

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [6 November 2019 10:23 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/8 "2019-11-06T10:23:32Z")

</div>

JFI - if replacing an existing nod, I remove the original one first just to avoid any name clashes - I don't know how npm handles such things but better safe than sorry 🙂

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [6 November 2019 10:54 UTC](https://discourse.nodered.org/t/developing-a-core-node-by-making-a-trial-contrib-node/808/9 "2019-11-06T10:54:09Z")

</div>

Provided you have kept the name of the node the same (so you have forked it and changed, for example, the code, but not changed the name of any nodes, then npm will overwrite the original one with the new one (just as if it were upgrading an existing node).
