On windows for some reason when I run npm install
it won't install devDependencies. AFAIK it should. If I run npm install --dev
devDependencies are installed. I don't understand why npm install
doesn't install devDependencies too, but installs only dependencies. What could be the reason? How can I fix it?
Maybe something is wrong with my package.json? It is listed below if it may be helpful:
{
"name": "try-brunch",
"version": "0.1.0",
"private": "true",
"devDependencies": {
"brunch": "^2.0.4",
"cssnano-brunch": "^1.1.5",
"javascript-brunch": "^1.8.0",
"sass-brunch": "^1.9.2",
"uglify-js-brunch": "^1.7.8"
},
"dependencies": {
"jquery": "^2.1.4"
}
}
devDependencies
are literally dependencies for the developers of the module. I bet most of us npm install
a module to use it, rather than develop it.
devDependencies
is needed only when you write the package (application). Using it does not require the devDependencies
. So it is reasonable for devDependencies
to require extra flags to be installed. If npm install
installed devDependencies
by default, the users would get redundant packages as well.
npm i
in my folder it grabs py package.json
and installs both deps and devdeps. This is the way it's intended to work and it makes sense (e.g. when I do npm i
after git clone
I expect to have all I need, including e.g. webpack plugins). This question addresses a bug, when the actual behaviour is different from intended. pls, take a look at docs - docs.npmjs.com/cli/install . There's a flag to not install devdeps, but the default behavior is to install them, which makes perfect sense and is what everybody expects
npm i
should bootstrap both, which is the intended, sane and documented behavior, so I honestly don't understand why you say that this issue should be a standard
Using it does not require the devDependencies
- I'm a bit confused. When I run npm i
on CI or server my app needs e.g. typescript, jest, webpack, whatever devdeps to get built, so I don't get which using
was this about
Check the NPM docs for install
With the --production flag (or when the NODE_ENV environment variable is set to production), npm will not install modules listed in devDependencies." The --only={prod[uction]|dev[elopment]} argument will cause either only devDependencies or only non-devDependencies to be installed regardless of the NODE_ENV."
Have you tried
npm install --only=dev
If you are worried that your package.json might be incorrect, best thing to do is this. Create a new folder, and run:
npm init --yes
Then:
npm install --save-dev brunch@^2.0.4
npm install --save-dev cssnano-brunch@^1.1.5
npm install --save-dev javascript-brunch@^1.8.0
npm install --save-dev sass-brunch@^1.9.2
npm install --save-dev uglify-js-brunch@^1.7.8
npm install jquery@^2.1.4 --save
And you should be good to go! Otherwise, will keep posting other options.
Check your npm configuration:
npm config list
npm gets its config settings from the command line, environment variables, and npmrc files. So check environment variables, and the npmrc file.
Still failing?
Ok, create a new folder, ideally somewhere else on your filesystem. ie. not in same folder hierarchy. For instance, C:\myNewFolder - the closer to the base C: drive the better.
Then run:
npm init --yes
Now run:
npm install underscore --save
and finally:
npm install mocha --save-dev
Does everything work as expected?
What I am trying to do is understand whether your problem is global, or something local to the previous folder and dependencies.
Check if npm config production value is set to true. If this value is true, it will skip over the dev dependencies.
Run npm config get production
To set it: npm config set -g production false
true
rather than false
?
make sure you don't have env variable NODE_ENV
set to 'production'.
If you do, dev dependencies will not be installed without the --dev
flag
npm install --dev
installs devDependencies recursively. This is almost never what you want, and is in fact deprecated.
--dev
option is deprecated. Use --only=dev
instead
npm install --include dev
does the trick @MaxCoplan
--dev
option is deprecated. Use --also=dev
instead.
--include=dev
might be a useful flag to someone out there.
I had a package-lock.json
file from an old version of my package.json, I deleted that and then everything installed correctly.
You can use the short way for installation dependencies only for development as follows:
npm i -D <dependencies-names>
I had a similar problem. npm install --only=dev
didn't work, and neither did npm rebuild
. Ultimately, I had to delete node_modules
and package-lock.json
and run npm install
again. That fixed it for me.
I have the same issue because I set the NODE_ENV=production
while building Docker. Then I add one more npm install --only=dev
. Everything works fine. I need the devDependencies for building TypeSciprt modules
RUN npm install
RUN npm install --only=dev
Make sure your package.json
is valid...
I had the following error...
npm WARN Invalid name: "blah blah blah"
and that, similarly, caused devDependencies
not to be installed.
FYI, changing the package.json
"name" to blah-blah-blah
fixed it.
So the way I got around this was in the command where i would normally run npm install
or npm ci
, i added NODE_ENV=build
, and then NODE_ENV=production
after the command, so my entire command came out to:
RUN NODE_ENV=build && npm ci && NODE_ENV=production
So far I haven't had any bad reactions, and my development dependencies which are used for building the application all worked / loaded correctly.
I find this to be a better solution than adding an additional command like npm install --only=dev
because it takes less time, and enables me to use the npm ci
command, which is faster and specifically designed to be run inside CI tools / build scripts. (See npi-ci documentation for more information on it)
Got a similar error after running npm-check-updates -u
. Solved it by removing node_modules
folder and package-lock.json
. After that a new npm install
and everything worked.
My exception:
Failed to load parser '@typescript-eslint/parser' declared in 'package.json » eslint-config-react-app#overrides[0]': Cannot find module '@typescript-eslint/parser'
In my case, the problem was that I had the NODE_ENV
variable set to production in the same terminal session I ran npm install
.
For my build to run properly I was not allowed to change the value of NODE_ENV
so I forced npm to install all the dependencies by adding the --production=false
flag to it: npm install --production=false
as mentioned in the docs.
If you don't need NODE_ENV
to be set to production
you can simply type export NODE_ENV=development
to your terminal to overwrite its value and run npm install
again.
As of now you could use:
npm i --also=dev
As @Ale told, we can use npm i -D <some_module_name>
or npm i --save-dev <some_module_name>
now. It seems command was changed at some point of node version. Offical (npm dependencies and devDependencies) says following.
When you add the -D flag, or --save-dev, you are installing it as a development dependency, which adds it to the devDependencies list.
Success story sharing
npm install && npm install --only=dev
Thanks!only
option is deprecated, you could use eitheromit
orinclude
which better suits you.