npm install packagename --save-dev 不更新 package.json

Posted

技术标签:

【中文标题】npm install packagename --save-dev 不更新 package.json【英文标题】:npm install packagename --save-dev not updating package.json 【发布时间】:2015-07-16 18:09:14 【问题描述】:

package.json 在运行 --save-dev 后不会更新是否有简单或微妙的原因?这是我的命令:

npm install modulename --save-dev

从项目的根目录运行。命令成功,新模块按预期显示在 node_modules 目录中。帮助将不胜感激。我正在使用 npm v 1.4.28

我当前的package.json 的全部内容是:


    "name": "FooWeb",
    "version": "1.0.0",
    "description": "Foo Web",
    "devDependencies": 
        "gulp": "3.8.11",
        "gulp-jshint": "1.9.2",
        "gulp-concat": "2.5.2",
        "gulp-sass": "1.3.3",
        "gulp-sourcemaps": "1.4.0",
        "gulp-watch": "4.1.1"
    

我在安装没有存储库字段或自述文件的软件包时确实收到警告,但我认为这不相关。

【问题讨论】:

你检查 package.json 权限了吗? @Aaron package.json 权限很好。 不知道npm ls 很漂亮!在我的情况下,它会在树中为模块输出一个绿色的无关标签,然后出现 ERR! extraneous: modulename@x.x.x. [path] 错误我也会继续沿着这条路径进行故障排除 --save 为我工作 (***.com/a/37603531/470749) 尝试使用 cmd 而不是 vs code 终端 【参考方案1】:

如果您没有从package.json 目录运行命令,就会发生这种情况。

例如,如果您被放置在文件夹 Project 而不是 Project\ClientApp 中,就会发生这种情况。

您会注意到,如果发生这种情况,您只会在错误的位置获得 package-lock.json

【讨论】:

【参考方案2】:

只是想添加另一个可能对我来说是解决方案的答案。

验证您是否在 Angular 项目的目录中。我没有,因此更改没有反映在我的 package.json 文件中。

【讨论】:

【参考方案3】:

我遇到了同样的问题,因为 nodemon 已在全球范围内安装。

我必须先卸载它

npm uninstall -g nodemon

然后将其作为开发依赖安装在本地

npm install --save-dev nodemon

然后应该更新package.json 文件。有时您的编辑器也可能会阻止文件更新,因此如果没有发生其他情况,请确保重新启动它。

【讨论】:

【参考方案4】:

这发生在 Intellij 上

对于遇到此问题的其他人,您是否从现有项目中复制了您的项目?

如果是这样,请关闭 Intellij 并删除 .idea 文件夹。 (你也可以删除node_modules重新开始)

再次打开项目,问题就解决了。

【讨论】:

【参考方案5】:

接受的答案仍然没有解决我的问题,然后我尝试更改语法位置 以前我使用以下命令将模块安装到 devDependencies

npm i --save-dev moduleName

然后我切换moduleName和--save-dev的位置,并且moduleName成功添加到package.json文件中

npm i moduleName--save-dev

然后用 moduleName 更新 package.json 文件。

【讨论】:

【参考方案6】:

从 package.json 文件中的 devDependencies 中删除依赖项并仅使用 --save 再次安装对我有用

【讨论】:

【参考方案7】:

我最近遇到了这个问题,发现无论出于何种原因,是 Atom 阻止了文件更新,即使文件没有打开也是如此。

我关闭了编辑器,重新运行了我的 npm install,再次打开了编辑器,一切正常。

【讨论】:

【参考方案8】:

我遇到了同样的问题。当我安装一些包时,它没有显示在 package.json 上。然后我删除了 package.json 文件并再次运行 npm init。之后它就可以工作了,我之前安装的包也在依赖项下。

【讨论】:

欢迎来到 ***!也许您可以添加更多详细信息,以更好地解释答案中最重要的部分。阅读How do I write a good answer? 了解更多信息。此外,一旦您获得更多声誉,您就可以将其发布为评论而不是答案,这会更合适。【参考方案9】:

如果您打开了未保存的package.json,这可能会在 VSCode(或可能其他编辑器)中发生。

文件正在实际更新但未在 IDE 中重新加载。 我想也许默认值是仅在文件未经编辑时才重新加载?或者也许我点击了一些东西来忽略警告。

【讨论】:

(所以在这种情况下,'save-dev' 是一个红鲱鱼) (注意:Save All 的快捷方式在 VSCode 和 VS 中是不同的) 谢谢,为我修好了。【参考方案10】:

您可能首先要检查您的配置(npm config ls 命令或~/.npmrc 文件)。 我有link=true

在 5.5.1 版本中,当 --save 处于活动状态时,此选项似乎被忽略。 鉴于 --save-dev 取代了 --save链接模式 再次处于活动状态。

所以对我来说,好像--save 覆盖了--link,而--save-dev 又覆盖了--save-dev

【讨论】:

【参考方案11】:

我试图安装 gruntjs 使用 "npm install --save grunt-sass" 但 package.json 不会更新

我做了上面提到的一切,但没有运气。但有趣的是,如果我尝试添加一个包说“下划线(npm install --save underscore)”,儿子就会得到更新。我不确定这是否是 nam 本身的问题。我确实是作为超级用户安装的。

【讨论】:

【参考方案12】:

我能够解决这个问题的唯一方法是使用npm install --save-dev moduleName 而不是npm install moduleName --save-dev。不过,使用npm install moduleName --save 对我来说效果很好。只有当我使用--save-dev 时,我必须把它放在moduleName 之前。我希望这对任何人都有帮助。

【讨论】:

【参考方案13】:

我尝试了上述答案中所述的所有命令,但成功安装了npm-upgrade 包。

npm i -g npm-upgrade 然后 npm-upgrade

【讨论】:

【参考方案14】:

我有一个.npmrc 文件,它使用内部构建的npm api 来获取包。我的问题是我没有连接到我公司的***

【讨论】:

【参考方案15】:

使用 express 生成器后,我使用 --s 安装了一些包,但没有一个添加到 package.json。

然后我删除了 package.json 并运行 npm init 并全部添加而无需再次安装

【讨论】:

【参考方案16】:

对我来说,问题是我从 notepad++ 复制了命令,它可能有特殊字符,或者是空格,它没有更新我的 package.json。

例如不工作; npm install --save debug pug jwt-simple method-override mongoose

确保在安装时清理命令行,例如每个模块之间的任何空格,因为其中可能还有特殊字符,具体取决于您的编码。

当我将其更正后,它起作用了。

npm install --save debug pug jwt-simple method-override mongoose

另外,请确保在运行命令时 package.json 没有在编辑器中打开,因为并非所有编辑器都能优雅地处理此问题。

【讨论】:

【参考方案17】:

Mustafah ELBanna 的回答帮助了我,但我想为像我这样的其他新手扩展他的回答。如果我错过了重要的事情,请纠正我。

如果您删除-g 标志,则该模块不会为您的机器全局安装,而只会在您的项目中本地安装。如果您还希望它全局安装,请再次执行相同的命令,但现在使用 -g 而不是 --save-dev,如下所示:

npm install --save-dev [packagename]

npm install -g [packagename]

在我看来,在一行中调用-g--save 时可能会出错。

但同样,我是新手,我感谢任何想要改进/纠正我的答案的人。

【讨论】:

【参考方案18】:

导航到 JSON 文件 -> 右键单击​​属性 -> 删除“只读”标志。

【讨论】:

【参考方案19】:

我在那里有 -g 标志,当我删除它时,它按预期工作......

【讨论】:

也为我工作。但这是为什么呢?如果我想全局添加一个包怎么办?【参考方案20】:

我的 package.json 中有一个语法错误导致我出现这种情况!

【讨论】:

【参考方案21】:

我也有这个问题,这让我发疯了。

最终修复它的是运行npm init。这在我的 package.json 中添加了一堆东西,但之后 --save-dev 按预期工作。即使我删除了npm init 添加的所有新内容,--save-dev 仍然有效。

【讨论】:

是的,这在 Ubuntu 14.04 上对我有用。谢谢你 也为我工作。甚至没有在我现有的 package.json 中添加任何内容 Google 把我带到了这里...我尝试安装这样的包:npm i -s <package>...package.json 中的“依赖项”字段未更新...我打错了 :) ... -s 必须是 -S(大写)。 我遇到了这个问题,发现它来自我在服务器上工作的事实。我将我的项目移到本地,现在一切正常。

以上是关于npm install packagename --save-dev 不更新 package.json的主要内容,如果未能解决你的问题,请参考以下文章

ng add <package name> 与 npm install <package name> 在 Angular 6 中的区别

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

npm相关依赖操作+版本问题

npm常用指令小记

在 npm update 后运行 npm ls <package name> 不显示更新版本?

npm