npm是nodejs的包管理工具.
常用npm命令
1,npm init,项目使用npm初始化,可以生成package.json包
2,npm install paackage -S //本地安装包,全局安装使用 -g
3, npm i --production //只装生产环境的包
4,npm list //查看当前项目已经安装的包
5,npm view gulp versions //查看npm包的所有版本
6, npm install jquery@2.2.4 -S //安装具体版本包
7,npm install jquery@1 -S //安装开头为1大版本的最高版本 如果版本不写,默认是最高版本
8,13.14.9 版本号,major:13 ,minor:14 patch:9
^代表主版本号,代表主版本号,后面用最新版本。~锁定主版本号和此版本号,后面的取最新,什么都不要的时候就代表版本号就根据配置安装,*代表最新版本。
9, npm outdated//查看包是否过期
10,npm update jquery //更新的依据是根据你想要的。可以用npm outdated查看
11,npm cache clean --force //清理npm缓存,npm可以将缓存中装的内容给清除
12,npm config get registry //查看npm源:
13,npm config set registry http://registry.npmjs.org //切换npm源方法一
14,nrm use npm //切换npm源方法二
15,npm ls //查看当前项目引用了哪些包
16,npm unpublish --force //卸载包
npm发布包
1,npm adduser//登录
2,npm publish//发布,发布之后就可以在npm官网查询到自己发的包并且能够在本地任意项目进行安装这个包。
npm adduser遇到问题 如果忘记密码,可以去npm官网登录界面重置密码,然后终端输入用户名和密码之后还需要输入邮箱,输入邮箱之后按回车键,邮箱会收到one-time password码,输入到终端即可登录成功:
npm publish会遇到以下问题,可能是包名冲突,修改一下package.json中的name即可:
发布完成之后,就可以在其他项目安装已经发布的包。
npm脚本
使用npm init初始化项目后,又一个package.json文件,可以在scripts中定义对应的npm脚本。
"scripts": {
"script1": "node script1.js",
"script2": "node script2.js"
}
如上述脚本,并行执行脚本可以执行:
npm run script1 & npm run script2
串行执行:
npm run script1 && npm run script2
通过脚本执行的文件可以拿到package.json中配置的信息:
console.log(process.env.npm_package_name); // foo
console.log(process.env.npm_package_version); // 1.2.5
也可以在脚本运行中直接拿到package.json的配置信息:
"repository": {
"type": "git",
"url": "xxx"
},
scripts: {
"view": "echo $npm_package_repository_type"
}
env可以列出所有环境变量:
"env": "env"
npm安装git包
//这样适合安装公司内部的git服务器上的项目
npm install git+https://git@github.com:lurongtao/gp-project.git
//或者以ssh的方式
npm install git+ssh://git@github.com:lurongtao/gp-project.git
cross-env
cross-env 使得您可以使用单个命令,而不必担心为平台正确设置或使用环境变量。NODE_ENV环境变量将由 cross-env 设置 打印 process.env.NODE_ENV === 'production'
//npm install --save-dev cross-env
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
}
}
NRM
NRM 是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换。
1,npm install -g nrm,全局安装nrm
2,nrm use taobao //切换镜像源
3,nrm test //测试对应源的相应时间
NPX
npm 从5.2版开始,增加了 npx 命令,所以一般不需要单独安装npx,npm自带就有。
在没有使用npx的时候,我们安装的包运行可以有两种方式
1,项目的根目录下执行
$ node ./node-modules/.bin/mocha --version
2,配置npm脚本运行
scripts:{
"start":"node ./node-modules/.bin/mocha --version"
}
有了npx之后,可以通过npx直接去找对应的可执行文件:
npx mocha --version
npx 的原理很简单,就是运行的时候,会到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在。
npx可以不全局安装就下载对应的包,下载包会放到一个临时目录下,使用后就删除:
npx create-react-app my-react-app
只要 npx 后面的模块无法在本地发现,就会下载同名模块
--no-install 参数和 --ignore-existing 参数:
//如果想让 npx 强制使用本地模块,不下载远程模块,可以使用--no-install参数。如果本地不存在该模块,就会报错。
$ npx --no-install http-server
//如果忽略本地的同名模块,强制安装使用远程模块,可以使用--ignore-existing参数。比如,本地已经安装了http-server,但还是想使用远程模块,就用这个参数。
$ npx --ignore-existing http-server