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

时间:2015-05-06 14:23:44

标签: node.js dependencies npm

在运行--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"
    }
}

我确实收到安装我没有存储库字段或README的软件包的警告,但我认为这没有关系。

20 个答案:

答案 0 :(得分:56)

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:5)

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

答案 3 :(得分:4)

我最近遇到了这个问题,并且发现无论出于什么原因,即使没有打开文件,Atom也会阻止文件更新。

我关闭了编辑器,重新运行了我的npm安装,再次打开了编辑器,一切都应该如此。

答案 4 :(得分:3)

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

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

答案 5 :(得分:2)

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

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

npm install --save-dev [packagename]

npm install -g [packagename]

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

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

答案 6 :(得分:1)

我正在尝试使用gruntjs     “npm install --save grunt-sass”但是package.json不会更新

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

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

我遇到了同样的问题,因为@import已被全局安装。

我必须先将其卸载

nodemon

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

npm uninstall -g nodemon

然后npm install --save-dev nodemon文件将被更新。有时,您的编辑器也可能会阻止文件更新,因此请确保在没有其他情况的情况下将其重新启动。

答案 9 :(得分:0)

这是我在Intellij上发生的

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

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

再次打开项目,此问题将得到解决。

答案 10 :(得分:0)

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

npm i --save-dev moduleName

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

npm i moduleName--save-dev

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

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

所以对我而言,事情恰好--save覆盖了--link,而--save-dev又覆盖了addEventHandler

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

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

答案 16 :(得分:0)

我有一个.npmrc文件,它使用内置的npm api来获取包。我的问题是我与我公司的VPN没有联系。

答案 17 :(得分:0)

在我使用快速生成器后,我安装了一些带有--s的软件包,但没有添加到package.json。

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

答案 18 :(得分:0)

对我来说,问题是我从记事本++中复制了命令,它可能在那里有特殊的字符,或者它是空格,而且它没有更新我的package.json。

e.g。不工作; npm install --save debug pug jwt-simple method-override mongoose

确保在安装时清理命令行,例如:每个模块之间的任何空格,因为根据您的编码,可能还有特殊的字符。

当我纠正它时,它起作用了。

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

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

答案 19 :(得分:0)

我的package.json中有一个语法错误导致了这个问题!