【你问我答】npm和npx有什么区别?

问题描述:

npm和npx有什么区别?

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入

------------
#我也有问题想询问牛友,怎么办?

欢迎私信@筱茜 说明你的问题,将根据问题具体情况排期进入【你问我答】专场~
私信请注明参与【你问我答】专场哦~

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!
#前端##悬赏#
全部评论
npm 是一个node package installer commander tool。 在安装了node.js环境下可以通过npm i xxx 来安装你需要的node package到本地或者全局。 npm i webpack -G //全局安装,路径为 /usr/local/bin npm i webpack -S -D //本地安装, 安装路径为 ./node-modules/.bin/ npm v5.2.0以后引入了一个新的命令npx。npx和npm有什么区别?下面介绍一下npx的使用场景。 例如以前用create-react-app初始化一个react项目如下: 首先全局安装create-react-app npm install create-react-app -g 然后用create-react-app初始化项目my-app create-react-app my-app npx  是一个工具,旨在提高从npm注册表使用软件包的体验 ,npm使得它非常容易地安装和管理托管在注册表上的依赖项,npx使得使用CLI工具和其他托管在注册表。 利用npx初始化一个react项目my-app如下: npx create-react-app my-app npx会执行create-react-app命令,临时安装create-react-app包,来初始化my-app,运行完后自动删除create-react-app包。 利用npx,就可以不用全局安装create-react-app包,而是用的时候临时从网上下载下来运行,避免全局污染。
点赞 回复
分享
发布于 2019-09-03 22:53
定义 首先从字面意思上理解 npm全称:node.js package manager,是一款node.js的包管理工具。 npx全称: node.js package execute,是一个node.js的包执行工具。 什么是包管理工具?什么是包执行工具? 包管理工具 众所周知,在linux的发行版centOS下可以通过yum来安装各种应用。例如当安装php的时候可以打开终端输入并运行以下命令来一键安装php。 yum install php 以java为例,当我们运行一个java程序时会需要依赖其它的java包,难道需要开发者自己去一个一个下载这些被依赖的包? 有没有上文提到类似yum的东西来一键安装这些依赖包呢? 熟悉java的同学都知道我们可以列出一张这些依赖包的清单,然后通过maven读取清单并自动安装。 npm 在这里我们把java和node.js来做一下等价,那么npm在node.js作用就相当于maven在java中作用。npm会读取package.json中列出来的依赖包,然后自动安装这些依赖包。 包执行工具 npx 当我们在开发项目使用到gulp时,可以打开终端并cd到当前项目路径下并执行以下命令来运行gulp。 ./node_modules/.bin/gulp 每次运行gulp都要输入这么多东西好麻烦,所以我们可以把上面这行代码写到package.json中,如下图所示。 之后在终端里只需要运行以下代码就可以执行gulp了。 npm run gulp 但是如果定义很多条script命令的话,如下图所示。 我们要写很多图中红框部分重复的代码"./node_modules/.bin/"。 这个时候npx的作用就体现出来了,它会自动帮我们搜索程序所在的路径,此时就不需要去手动定义程序的路径了,效果如下图。 ./node_modules/.bin/gulp 可以替换为 npx gulp 所以package.json就可以变成下图所示的样子。 此时npx自动帮我们找到了gulp所在的路径。当然这只是npx一个最基础的功能。 总结 通过上述讲解,相信大家已经对npm和npx的作用有了一些认识。
点赞 回复
分享
发布于 2019-09-04 21:39
阅文集团
校招火热招聘中
官网直投
npm:node.js package manager NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用。 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。 使用npm安装模块 $ npm install <Module Name> 使用npm卸载模块 $ npm uninstall express 使用npm更新模块 $ npm update express 使用npm搜索模块 $ npm search express …… npx: node.js package execute npx是一种在npm中安装工具,node.js的包执行工具,也可以被单独的下载使用。将npm升级到npm@5.2.0或以上的用户,会发现与通常的npm平级的文件夹中还多了另一个二进制文件:npx 旨在提高从npm注册表使用软件包的体验 ,npm使得它非常容易地安装和管理托管在注册表上的依赖项,npx使得使用CLI工具和其他托管在注册表。 利用npx,就可以不用全局安装create-react-app包,而是用的时候临时从网上下载下来运行,避免全局污染。比如:可以直接通过 npx eslint --help,不需要全局安装也不需要去写 scripts 了
点赞 回复
分享
发布于 2019-09-07 07:07
npm: node package managernpx: node package execute npm 类似于 python 中常用 pip,java 中 maven, gradle。如同它的英文,是一个 node 包管理器。 在 npm v5.2 引入了一个方便 node 开发者运行 node 模块的工具。在此之前,如果你想运行一个 node 模块,你一般要指明它对应的 .sh 或 .cmd 文件的路径。比如你想初始化 eslint,eslint 的 .sh 文件存放在 node_modules/.bin/eslint.sh。因此你可以执行下面的 shell 命令来初始化: node-modules/.bin/eslint --init 通常你可以在 packages.json 的 scripts 里面直接调用 eslint . --fix来 lint 文件是因为在调用 scripts 时 npm 会将 node-modules/.bin 临时追加到 path 环境变量中,所以你可以直接通过文件名来调用。如果每一个 node 模块命令都写一个 scripts 那还不是麻烦死了,于是 npm 有引入了 npx 这个工具来便于用户直接执行 node 模块。现在你如果想查看 eslint 的帮助命令,可以直接通过 npx eslint --help,不需要全局安装也不需要去写 scripts 了。而且通常 scripts 如何要给一个 node 模块命令传参数还要加个 --,比如还是 eslint 的帮助命令,如果是 scripts 你需要这样写:eslint -- --help,当然没人会在 scripts 写 eslint 帮助命令了。 它俩的关系具体来说就是: npx 是 npm 的一个功能模块 它俩的用途:知道它们的全拼是啥意思就知道干嘛用的了
点赞 回复
分享
发布于 2019-09-03 23:25

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务