npm install --production 忽略我的依赖

Posted

技术标签:

【中文标题】npm install --production 忽略我的依赖【英文标题】:npm install --production ignore my dependencies 【发布时间】:2021-09-09 10:25:05 【问题描述】:

我有这个package.json


    "private": true,
    "scripts": 
        "dev": "npm run development",
        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --disable-host-check --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js"
    ,
    "dependencies": 
        "cross-env": "^7.0.3"
    ,
    "devDependencies": 
        "autoprefixer": "^10.2.6",
        "axios": "^0.19",
        "browser-sync": "^2.26.14",
        "browser-sync-webpack-plugin": "^2.3.0",
        "cross-env": "^7.0.3",
        "laravel-mix": "^6.0.19",
        "less": "^3.13.1",
        "less-loader": "^7.3.0",
        "lodash": "^4.17.21",
        "resolve-url-loader": "^3.1.3",
        "vue-template-compiler": "^2.6.14"
    

只是为了测试 NodeJS、NPM、Laravel 和 Laravel Mix (Webpack) 如何一起工作,我运行:

npm install --production (https://docs.npmjs.com/cli/v7/commands/npm-install)

使用 --production 标志(或者当 NODE_ENV 环境变量设置为生产时),npm 将不会安装 devDependencies 中列出的模块。

实际行为

当我转到node_modules 文件夹时,我看不到任何cross-env 包。而且命令行的输出是:

$ npm install --production

最新,在 17 秒内审核了 1 个包

发现 0 个漏洞

,表示没有安装任何包(特别是:cross-env)。

预期行为

将安装cross-env(并且仅cross-env),作为dependencies的一部分,使用以下命令:npm run install --production

问题

为什么dependencies 数组似乎被 NPM 忽略了?

【问题讨论】:

【参考方案1】:

您在devDependencies 中也列出了cross-env。依赖项只能在一个位置声明。也许 npm 忽略了 cross-env,因为它在 devDependencies 中列出。

【讨论】:

【参考方案2】:

我发现即使在package.json 中没有明确列出两次依赖项,但它是dependencies 中声明的包的子依赖项,也会发生这种情况。我的例子:


  "dependencies": 
    "sharp": "^0.26.1" // depends on "color" which depends on "color-convert"
  ,
  "devDependencies": 
    "color-convert": "^2.0.1" 
  

在此示例中,如果运行 npm install --only=production,则不会安装 color-convert,即使它是生产依赖项的依赖项(使用 npm v6.14.14)

【讨论】:

以上是关于npm install --production 忽略我的依赖的主要内容,如果未能解决你的问题,请参考以下文章

npm install 和npm install --save 以及npm install --save-dev区别

laravel npm run production 编译成功,但是 npm ERR!代码生命周期

npm init,npm -y, npm install --save,npm install --save-dev

npm install -save 和npm install -save-dev 给你好看

npm install --save 和 npm install -d的区别

运行 npm install cordova 时 npm install 不起作用