Node.js NPM安装->;但仅向package.json添加适当的行

Node.js NPM安装->;但仅向package.json添加适当的行,node.js,npm,Node.js,Npm,多年来我一直在想这个问题,但从未费心去问。在许多情况下,我只想在package.json中为最新版本的包添加适当的行,而不实际触摸node\u modules 假设我想将lodash的最新版本添加到我的项目中,而不实际将其安装到node\u模块。是否有NPM命令来执行此操作 让我知道是否有更好的方法来表达这个问题。除非有人能想出更好的方法,否则似乎可以使用一个简单的工具来实现这一点: npm视图版本 阅读package.json,将依赖项添加到依赖项,按名称对依赖项排序 保存package.js

多年来我一直在想这个问题,但从未费心去问。在许多情况下,我只想在
package.json
中为最新版本的包添加适当的行,而不实际触摸
node\u modules

假设我想将lodash的最新版本添加到我的项目中,而不实际将其安装到
node\u模块
。是否有NPM命令来执行此操作


让我知道是否有更好的方法来表达这个问题。

除非有人能想出更好的方法,否则似乎可以使用一个简单的工具来实现这一点:

  • npm视图版本
  • 阅读package.json,将依赖项添加到依赖项,按名称对依赖项排序
  • 保存package.json

  • 一个简单的sh函数来获取和格式化数据可能会有所帮助

    npmvp(){
      npmvp_version=$(npm view $1 version)
      echo " \"$1\": \"$npmvp_version\""
    }
    
    可能是另一种快速的方式

    npmvp(){
      npmvp_name=$1
      npmvp_version=$(npm view $npmvp_name version)
      cat package.json | jq --arg name "$npmvp_name" --arg version "$npmvp_version" \
        '.dependencies[$name] = $version' > package.json.tmp
      #mv package.json.tmp package.json
    }
    

    否则,您可以深入研究
    npm
    代码,让它按照实际安装的步骤进行,而不是自己实现一些全新的东西

    vi package.json
    ?是的,但是您必须查找要安装的软件包的最新版本号。那一点也不方便,好吗?换句话说,这是很简单的“lodash”:“最新”,但这不是一个好主意,所以我们做了
    “lodash”:“x.y.z”
    ,但我们不知道
    x.y.z
    是什么,只有npm知道这一点,除非你想做一个有趣的Web搜索。像
    npmvp(){version=$(npm视图$1版本);echo“\”$1\:“$version\”;
    这样的函数可能会有所帮助
    npmvp bluebird
    “bluebird”:“3.5.1”
    cool matt,是的,把它作为你自己的答案加上,你至少会得到一个升级票。我同意bash函数比
    npm安装-g
    ,因为我经常使用nvm更改全局npm/节点版本。是的,如果你只是将它登录到控制台,那就足够了,我想,然后您可以手动更改package.json。