Reputation: 145
I'm working on an NPM package right now.
The main code for the package (repo/src/maincode.js) has a few dev dependencies and a few dependencies needed to run it. When the user installs the npm package (through npm i) these dependencies will need be installed.
Now, that being said, I also want to create a react project that showcases this npm package, and have it live in the same repo, in an examples directory (repo/examples/react/app.js). This react app may have its own dependencies and dev dependencies, but I really don't want all of these to be forced onto the user when they're installing my npm package just to use in their projects.
How might I go about solving this problem? Is there a way to create a set of dependencies that are only installed if you are running a particular script, or running example code ?
Upvotes: 1
Views: 596
Reputation: 70075
You can give the examples
directory its own package.json
file and instruct folks who want to run the examples to cd
into the examples
directory and run npm i
there. Any code in the examples
directory that imports a module will look in its own node_modules
before checking the node_modules
in the parent directory.
The MarkoJS examples repository takes this approach and even makes it more granular. Instead of having a single package.json
for the examples
directory, there is a package.json
for each separate example.
If you want, you can create a helper script in the main package.json
for the user so they can do something like npm run build-examples
and it will do the npm install
for them as part of the process.
Upvotes: 2