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

npm install packagename --save-dev not updating package.json

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

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"
    }
}

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

我也有这个问题,快把我逼疯了。

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

我的 package.json 中存在语法错误,导致我出现此问题!

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

导航到 JSON 文件 -> 右键单击​​属性 -> 删除 "read only" 标志。

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

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

npm install --save-dev [packagename]

npm install -g [packagename]

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

不过,我还是个新手,我感谢任何想improve/correct回答我的人。

对我来说,问题是我从 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,因为并非所有编辑器都能妥善处理。

在我使用 express 生成器后,我安装了一些带有 --s 的软件包,其中 none 添加到 package.json。

然后我删除了 package.json 和 运行 npm init 并添加了所有这些而无需再次安装

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

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

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

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

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

我做了上面提到的所有事情,但没有运气。但有趣的是,如果我尝试添加一个包说 "underscore (npm install --save underscore)" 儿子得到更新。我不确定这是否是 nam 本身的问题。我确实以超级用户身份安装。

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

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

所以对我来说,事情的发生就好像 --save 覆盖了 --link,后者又覆盖了 --save-dev

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

文件 实际上正在更新,但未在 IDE 中重新加载。 我想也许默认设置是仅在文件未经编辑时才重新加载?或者我可能点击了某些内容以忽略警告。

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

我最近 运行 对此进行了研究,并发现无论出于何种原因,Atom 都在阻止文件更新,即使文件没有打开也是如此。

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

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

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

npm i --save-dev moduleName

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

npm i moduleName--save-dev

然后 package.json 文件更新为模块名称。

这件事发生在我的 Intellij 上

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

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

重新打开项目,问题就解决了。

我遇到了同样的问题,因为 nodemon 已经全局安装了。

我必须先卸载它

npm uninstall -g nodemon

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

npm install --save-dev nodemon

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

只是想添加另一个可能的答案,证明是我的解决方案。

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

如果您不是 运行 来自 package.json 目录的命令,就会发生这种情况。

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

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