Reputation: 342
I am doing an internship in a company.
I need to create a node server.
I installed node on the computer (Windows) and I should install some plugins like:
- nodejs-webpack
- colors
- uglify
Normally I need to enter a command like : npm install "theModule"
But the software can not access the internet (due to company restrictions) and support service can not authorize the software (or do not want).
Can I install modules in any other way ? (download from Google and slide archives in the correct folder for example).
If the answer is no, do you know how can i get around this security?
Upvotes: 4
Views: 319
Reputation: 59213
I added this as a comment on your own answer, but I figured I should add a real answer with a better explanation.
Normally when you run npm install package-name
npm installs the package to a node_modules
directory in the directory you are in at that moment. So if your app was located at C:\code\my-app
then you would cd
into that directory and run npm install package-name
. This would create a node_modules
directory at C:\code\my-app\node_modules
if it didn't already exist. Then it would install package-name
into that directory at C:\code\my-app\node_modules\package-name
.
As long as the module is in the node_modules
directory for your app, you can require the module in your code without entering a big long file path.
var ws = require('nodejs-websocket');
The place you manually installed your module is the global node_modules
directory. It's where npm would install a module if you did npm install -g package-name
. The global node_modules
directory is added to your system path when you install npm. In other words, any modules you install in there would be accessible from the command line like any other command. For example:
npm install -g bower
That would install the "bower" package to the global npm module directory. Bower would then be accessible as a command line tool for you to use. For example:
bower install angularjs
The global directory is more for tools like that and not really for modules that you intend to use in your code. Technically you can require a module from anywhere by including the full path in the require
call like you did, but the standard practice would be to place it in the node_modules
directory in the root of your application, and then require it with just its name and not a full path.
Edit: Here's another tip that you might like to take advantage of as well.
When you normally install a module with npm install package-name
, your application usually has a package.json
file at the root of it. If it does, you can do npm install package-name --save
and npm will add the package-name
module to a list in your app's package.json
file. Once a module is listed in your app's package.json
file it's called a "dependency" of your app because it basically says your app depends on package-name
.
Normally, when you have dependencies listed in package.json
, you can completely delete your app's node_modules
directory and then simply run npm install
from within your app's root directory and npm will automatically install all dependencies it finds listed in your app's package.json
file. Since your corporate firewall won't allow this automatic downloading of modules, you won't get that benefit. However it is still good practice to follow the same conventions.
A trick you can do to create your package.json
file is to manually install your dependencies into your app's node_modules
directory. Once you have the modules your app needs, you can instruct npm to create a package.json
file for your app by simply running npm init
. It will walk you through a few little prompts to fill out your package.json
file with details about your app. It will then peek inside your node_modules
directory to see if you've already installed any modules before having a package.json
file. If it finds any, it will automatically add them to the dependencies field in the package.json
file it creates :D
With a proper package.json
in place you'll always have a nice tidy list of what dependencies your application needs, even if your node_modules
directory gets deleted. Normally people add their app's node_modules
directory to their .gitignore
file, only checking in the package.json
file. This way they don't store their dependencies in source control but they can still be easily installed on new machines that clone it by simply running npm install
from inside the app's directory. In your case though you may want to just add node_modules
to your source control since you can't let npm install dependencies automatically.
Upvotes: 0
Reputation: 342
I found it !
Just for exemple, we will install 'nodejs-websocket' :
1) You just have to download it here.
2) Put files into your Node's directory (for me it's "C:\Program Files\nodejs\node_modules\npm\node_modules")
3) in your .js file just add this line : var ws = require("C:/Program Files/nodejs/node_modules/npm/node_modules/nodejs-websocket/")
Done ! Thanks for all :D
Upvotes: 2
Reputation: 2013
You need a private npm repository.
Check out this answer:
can you host a private repository for your organization to use with npm?
Upvotes: 5