npm exec和npx的区别

npm exec -- <pkg>[@<version>] [args...]
npm exec --package=<pkg>[@<version>] -- <cmd> [args...]
npm exec -c '<cmd> [args...]'
npm exec --package=foo -c '<cmd> [args...]'
npx -- <pkg>[@<version>] [args...]
npx --package=<pkg>[@<version>] -- <cmd> [args...]
npx -c '<cmd> [args...]'
npx --package=foo -c '<cmd> [args...]'

从以上两者的使用方式上,我们很容易可以看出,npm exec 命令后面的内容与 npx 命令后面的内容相同,npx 就是 npm exec 的简写,但在解决包方面还是有一些区别的,如下所示:

npm exec

//先解决作为选项的@npmcli/foo包
//不解决作为位置参数的foo@latest包
//最后运行foo@latest bar(在--package=@npmcli/foo上下文)
$ npm exec foo@latest bar --package=@npmcli/foo

可以使用双连字符(--)标志(flag)来抑制作为选项的包的解决,以达到与 npx 一样的功能。

//以下命令等效于下述npx命令
//先解决作为位置参数的foo@latest包
//不解决作为选项的@npmcli/foo包
//最后运行foo bar --package=@npmcli/foo
$ npm exec -- foo@latest bar --package=@npmcli/foo

npx

//先解决作为位置参数的foo@latest包
//不解决作为选项的@npmcli/foo包
//最后运行foo bar --package=@npmcli/foo
$ npx foo@latest bar --package=@npmcli/foo

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/javascriptexp/5448.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2021年7月10日
下一篇 2021年8月6日

相关推荐

  • Node.js风格的CommonJS模块

    CommonJS 模块用于在服务器环境中使用,而 Node.js 使用了 CommonJS 模块的轻微修改版本,本文介绍 Node.js 风格的 CommonJS 模块。 模块就是以 .js 为扩展名的 JavaScript 文件。 普通脚本文件内的顶级的成员对其它脚本文件来说是公开(public)的全局上下文,而模块…

    JavaScript经验 2023年3月7日
    03380
  • type=”module”、defer、async属性的区别

    当 <script> 标签无 type=”module” 属性时,defer 和 async 属性都只可以被用在 <script> 元素的外部方式,如果被用在 <script> 元素的内部方式,则会被忽略。 当 <script> 标签有 type=”module” 属性时…

    JavaScript经验 2024年1月25日
    03680
  • JavaScript对象简谱(JavaScript Object Notation,JSON)详解

    1.结构(structure) 1.1对象(object) 对象(object)是“键/值”对的无序集合。 一个对象以左花括号 { 开始,然后以右花括号 } 结束。键必须使用双引号字符串,每个键后跟一个冒号 :  ,“键/值”对之间使用逗号 , 分隔。 1.2数组(array) 数组(array)是值的有序集合。 一个…

    JavaScript经验 2023年3月2日
    03710

发表回复

登录后才能评论