Search code examples
npmnexusember-addonnpm-publish

Publish ember addon to local NPM registry for developer builds?


How can I support these NPM/ember addon scenarios?

  • developers build ember addon A and use build ember application B which uses their A local package
  • developers only builds B installing A from our nexus NPM integration repository
  • build system builds ember addon A installing into our nexus NPM release repository

Maven

  • developer desktop builds install packages to a local repo to be used later in the build.
  • build system builds deploy packages to our internal shared repo to be used by developers so they don't need to build all

NPM

  • build system builds can use npm publish --registry http://ourrepo/nexus/.... to publish into a private registry
  • develop desktop builds do????

We could use DependsOnMe with relative paths but that requires us to setup some kind of rule where builds work one way locally and another on the build machine.

While possible, I hope there's a more elegant solution to making this happen.

Can I have developers generate packages that go into the local npm cache for later use and if so can you point me to that documentation?

Related


Solution

  • Because we use maven front end plugin to manage npm and ember we can encapsulate an additional npm module (in this case an ember addon) as a maven artifact and make use of maven dependency management for our various scenarios

    Ember Add On module

    • add 'npm pack' to generate local package in npm repository (in our case root/target/tmp/.npm//)
    • add assembly to generate tar.gz containing tar file (a little silly) and attach it to module as an artifact (type: tar.gz, classifer: ember-addon)

    Client module

    • add maven-dependency-plugin unpack which unpacks addon module's tar.gz classifier: ember-addon to target/ember-addons prior to npm execution for this module
    • modify package.json to use local dependency "our-addon" : "file:../../target/ember-addons///package.tgz"

    If a user builds ember and client, then addon module build placing the artifact in local maven repository. Client module unpacks from local repository and pulls into node_modules via npm ember build process.

    If a user only builds client, then client module fetches addon artifact from our nexus repository prior to the unpack and use phases.