fix: only devDependencies are installed regardless of the node env (#4805)

close #4745
This commit is contained in:
spencer17x
2022-05-27 08:05:20 +08:00
committed by GitHub
parent 95ac386bf4
commit ae2f845c5d
3 changed files with 24 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
---
"@pnpm/config": patch
"pnpm": patch
---
`NODE_ENV=production pnpm install --dev` should only install dev deps [#4745](https://github.com/pnpm/pnpm/pull/4745).

View File

@@ -338,6 +338,15 @@ export default async (
pnpmConfig.packageManager = packageManager
if (env.NODE_ENV) {
if (cliOptions.production) {
pnpmConfig.only = 'production'
}
if (cliOptions.dev) {
pnpmConfig.only = 'dev'
}
}
if (pnpmConfig.only === 'prod' || pnpmConfig.only === 'production' || !pnpmConfig.only && pnpmConfig.production) {
pnpmConfig.production = true
pnpmConfig.dev = false

View File

@@ -26,6 +26,15 @@ test('production install (with production NODE_ENV)', async () => {
await project.has('is-positive')
})
test('dev dependencies install (with production NODE_ENV)', async () => {
const project = prepare(basicPackageManifest)
await execPnpm(['install', '--dev'], { env: { NODE_ENV: 'production' } })
await project.hasNot(Object.keys(basicPackageManifest.dependencies!)[0])
await project.has('@rstacruz/tap-spec')
})
test('install dev dependencies only', async () => {
const project = prepare({
dependencies: {