I have a question concerning best practice for including node_modules into a HTML website. Imagine I have Bootstrap inside my node_modules folder. Now for the distribution version of the website (the live version) how would I include the Bootstrap script and CSS files located inside the node_modules folder? Does it make sense to leave Bootstrap inside that folder and do something like
Usually, you don't want to expose any of your internal paths for how your server is structured to the outside world. What you can is make a
/scripts static route in your server that fetches its files from whatever directory they happen to reside in. So, if your files are in
"./node_modules/bootstrap/dist/". Then, the script tag in your pages just looks like this:
If you were using express with nodejs, a static route is as simple as this:
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
Then, any browser requests from
/scripts/xxx.js will automatically be fetched from your
Note: Newer versions of NPM put more things at the top level, not nested so deep so if you are using a newer version of NPM, then the path names will be different than indicated in the OP's question and in the current answer. But, the concept is still the same. You find out where the files are physically located on your server drive and you make an
express.static() to make a pseudo-path to those files so you aren't exposing the actual server file system organization to the client.
If you don't want to make a static route like this, then you're probably better off just copying the public scripts to a path that your web server does treat as
/scripts or whatever top level designation you want to use. Usually, you can make this copying part of your build/deployment process.