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