npm、npx之间的区别

npm

NPM是随同NodeJS一起安装的包管理工具

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
# 淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。,命令如下:
npm install -g cnpm --registry=https://registry.npm.taobao.org

安装

  • i 是 install 的简写
  • -g 是全局安装,不带 -g 会安装在个人文件夹
  • -S 与 --save 的简写,安装包信息会写入 dependencies 中
  • -D 与 --save-dev 的简写,安装包写入 devDependencies 中
# 安装模块到项目目录下
npm install moduleName  

# -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置,具体查看方法是在终端输入npm config edit,在弹出的文档中找到; prefix=C:\node,就是了。
npm install -g moduleName 

# --save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。
npm install --save moduleName 

# --save-dev 的意思是将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖
npm install --save-dev moduleName 

查看安装信息

#  查看本地安装的模块
npm list

#  查看所有全局安装的模块
npm list -g

# 某个模块的版本号
npm list moduleName

其他命令

# 卸载模块
npm uninstall express

# 查看模块
npm ls

# 更新模块
npm update express

# 搜索模块
npm search express

# 创建模块
npm init

# 注册用户
npm adduser

# 可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人
npm adduser

# 发布模块
npm publish

# 撤销发布自己发布过的某个版本代码
npm unpublish <package>@<version>

npx

npx是一个工具,npm v5.2.0引入的一条命令(npx),随npm一起安装的,npx让npm包中的命令行工具和其他可执行文件在使用上变简单。

npx的执行顺序机制

  • 首先会自动检查当前项目中的可执行依赖文件(即**./node_modules/.bin下面的可用依赖**),

  • 如果不存在就会去环境变量path中寻找

  • 如果还没有就会自动安装,其安装的依赖位于node安装目录中的node_cache/_npx之中,所以安装的依赖只是临时的。

  • 自动加载node_modules中依赖包,不用指定$PATH

在命令行中执行项目中安装的依赖

例如:要在命令行中使用eslint检测代码规范 npm install eslint --save-dev

# 不适用npx

# 根据路径在执行eslintde的脚本
./node_modules/.bin/eslint yourfile.js

# 使用npm-run-script的方式,在package.json的script字段里面执行操作:
"script": {
   "eslint": "eslint yourfile.js"
}
# 然后在命令行执行 
npm run eslint

# npx就方便多了,可以直接这样:
npx eslint yourfile.js

# npx初始化eslint的配置文件
npx eslint --init

一次性安装临时使用某个依赖

# 比如我们只是想要一次性使用babel-cli来编译代码,并不想要在项目中安装它

npx babel-cli test.js --presets=es2015,stage2

更多官方解释

https://www.npmjs.com/package/npx

总结

npx 为 npm 文件执行功能进行了一些扩展,提供了一种使用 node.js CLI 工具的新方式,这种方式比起以前的执行方式更加灵活,并且对于本地环境变量的污染更小

其他参考地址:

  • https://blog.csdn.net/jigetage/article/details/80993563
  • https://www.runoob.com/nodejs/nodejs-npm.html
  • https://juejin.cn/post/6886818067913900046
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

monkey01127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值