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