Yarn install –production does not remove dev dependencies

Do you want to request a feature or report a bug?

Bug
Feature Request

What is the current behavior?
I would expect the following sequence to remove all development dependencies from the project but it does not.

yarn install
yarn install --production

If the current behavior is a bug, please provide the steps to reproduce.

git clone https://github.com/ajhool/yarn-dependency-behavior.git
cd yarn-dependency-behavior
yarn install //moduleD only has devDependencies so ./packages/moduleD/node_modules is populated.
yarn install --production // observe that ./packages/moduleD/node_modules is still populated despited only include devDependencies.

What is the expected behavior?
Yarn install && yarn install –production should be idempotent, it should not matter if I call yarn install before yarn install --production

If the current behavior is expected, then perhaps an explicit statement in the yarn install --production documentation or an execution-time warning would be helpful. A lot of people simply run yarn install --production before zipping and deploying their code.

Please mention your node.js, yarn and operating system version.
Node 8.6.0
MacOS 10.12.6
Yarn 1.9.4

Author: Fantashit

7 thoughts on “Yarn install –production does not remove dev dependencies

  1. I believe that I closed it because yarn install --production is not designed to prune out dev dependencies. It is only supposed to install the production dependencies. yarn install --production is a subset of yarn install and calling yarn install --production after calling yarn install should have no effect.

    Please don’t kill the messenger on this one, I believe that yarn install --production should prune out the dev dependencies, but I don’t believe that the yarn authors intended for that behavior.

    This thread might be helpful: #696

    I will reopen it and describe this as a feature request instead of a bug.

  2. Does yarn have a way to prune package for production, though? For build scenarios it seems a fairly straightforward behaviour: install all dependencies (including dev for stuff like gulp or whatever), perform build, remove dev dependencies and voila.

    For a 100%% yarn-based process, seems like this fairly basic behaviour is missing so I have a choice between either removing the folder and reinstall or replicating yarn configuration for npm as well to be able to prune (since in my case I’m installing to a custom folder specified in yarnrc which NPM doesn’t know about). In which I might as well just use npm.

    I do think the behaviour described in the initial report is desirable.

Comments are closed.