- 可以选择关闭 npm 安装包的进度条
npm 的操作进度条显示是非常耗时的,在某些情况下,有超过 50% 的时间在更新用户界面。我么可以设置进度条的环境变量为 false。
➜ ~ npm set progress = false
- 通过快捷方式生成 npm 包或者一个 git 项目
使用 npm init -y 生成一个默认的包,包含最基本的信息。
➜ ~ npm set progress = false
- 列出所有安装的包并且可以展示其依赖,使用 - -depth=0 限制依赖树的深度。
➜ ~ /npm ls - -depth=0
- 查看有过期的包,选择需要更新的包升级。
➜ ~ npm outdated -l
➜ ~ npm outdated react
- 快速通过浏览器导航到包文档。
- 快速找到并打开 github/gitlab 仓库地址或者是其他网址
➜ ~ npm repo react - 导航到包的文档或者首页
➜ ~ npm docs react
➜ ~ npm home react - 导航到包的 issues 或者未解决问题的分类。
➜ ~ npm bug react
- 查阅一个包含有价值的信息,出现实最新的 beta 和稳定版本,以及分布的信息格式和维护者。
➜ ~ npm view react / npm v react
➜ NPM npm view react
react@17.0.1 | MIT | deps: 2 | versions: 352
React is a JavaScript library for building user interfaces.
https://reactjs.org/
dist
.tarball: https://registry.npm.taobao.org/react/download/react-17.0.1.tgz
.shasum: 6e0600416bd57574e3f86d92edba3d9008726127
dependencies:
loose-envify: ^1.1.0 object-assign: ^4.1.1
maintainers:
- acdlite <npm@andrewclark.io>
- brianvaughn <briandavidvaughn@gmail.com>
- fb <opensource+npm@fb.com>
- gaearon <dan.abramov@gmail.com>
- lunaruan <lunaris.ruan@gmail.com>
- sebmarkbage <sebastian@calyptus.eu>
- sophiebits <npm2@sophiebits.com>
- trueadm <dg@domgan.com>
dist-tags:
experimental: 0.0.0-experimental-00d4f95c2 next: 0.0.0-00d4f95c2
latest: 17.0.1 untagged: 16.14.0
published 4 months ago by gaearon <dan.abramov@gmail.com>
➜ NPM npm view react
当然可以使用 npm v react versions 只查看 react 发布的历史版本号。
- npm 添加自动补全/查找功能, tab 键激活。
➜ ~ npm completion >> ~/.bashrc
➜ ~ source ~/.bashrc
- 项目中链接本地的一个包,开发调试非常有效。
➜ ~ git clone
➜ ~ cd
➜ ~ npm link
➜ ~ cd ../project
➜ ~ npm link
- 安装明确版本号的一个包。
➜ ~ npm i react@17.0.1
- 展示所有的 npm 设置项目,可以结合下面场景使用。
➜ ~ npm run env | grep npm_
- 可以创建自定配置的变量
"config": {
"build_folder":"./dist"
}
然后在 scripts 命令中使用它,维护一些私有或者公共变量非常方便。
"scripts": {
"build": "gulp build --dist $npm_package_
config_build_folder"
}
或者
"scripts": {
"echo-str": "echo $npm_packag_str",
"write-str": "npm run echo-str $npm_packag_str_input >> test.txt"
}
然后运行 write-str 命令,会出现下面的结果
**➜ ~** npm run write-str 这是一个输入测试
> byrobot-front@2.9.0 write-str /Users/fanduanduan/WorkSpace/gitlab.indata.cc/byfe/byrobot-front
> npm run echo-str $npm_packag_str_input >> test.txt "这是一个输入测试"
// 会生成如下 test.txt 文件
> byrobot-front@2.9.0 echo-str /Users/fanduanduan/WorkSpace/gitlab.indata.cc/byfe/byrobot-front
> echo $npm_packag_str "这是一个输入测试"
这是一个输入测试
- 是用 npx 运行脚手架,npx 会自动查找当前依赖包中是否有可执行文件 ,如果找不到,就回去环境变量中的 PATH 中查找。如果再找不到,就会帮你安装它。
➜ ~ npx create-react-app my-app
- 从不同的源地址安装包
- 从特定的一个源安装组件,也可以是私有的源
➜ ~ npm config set @byai https://npm.byai.com
➜ ~ npm i @byai/ajax - 用户无感知的安装
// 在执行 npm install 命令前,npm 会自动执行 npm preinstall 钩子
"scripts": {
"preinstall": "node ./bin/preinstall.js"
- 配置 ./bin/preinstall.js
const { exec } = require('child_process');
exec('npm config get registry', function(error, stdout, stderr) {
if (!stdout.toString().match(/registry\.x\.com/)) {
exec(' npm config set @xscope:registry https://xxx.com/npm/');
}
});
- 重新安装全部依赖包,可以使用一下命令,它通常用于我们的发布环境上,需要重新安装包的情况下。
➜ ~ npm ci
它与npm install
在以下方面不同:- 它会根据
package-lock.json
安装依赖包,这可以保证整个开发团队都使用版本完全一致的依赖,避免把时间浪费在排查因为依赖不一致而导致的各种奇怪问题上 - 它会安装
package-lock.json
文件中提到的软件包的确切版本,无需计算求解依赖满足问题,在大多数情况下都可以大大加速 node 模块安装过程 - 它会先删除项目中现有的
node_modules
,然后全新安装 - 它不会写入
package.json
或任何包锁:安装基本上是冻结的 npm install
可以安装单个依赖包,npm ci
只能一次安装整个项目所以依赖包,无法安装单个依赖包
- 它会根据
另外,如果 package-lock.json
过时(和 package.json
冲突),那么 npm ci
会很贴心地报错,避免项目依赖陷入过时状态。
注意: 如果你使用 npm ci
,别忘了把 package-lock.json
加入 git 仓库。
- 删除重复的包
我们可以 dedupe 命令删除重复的包,并在多个从属于包之间有效的功效依赖项目,简化了总体结构。因此形成一个平面且具有重复依赖的树。
➜ ~ npm dedupe
➜ ~ npm ddp
- 扫描应用中包存在的漏洞,并尝试修复它们
➜ ~ npm audit fix
- 查看当前 npm 运行的环境
会展示 node,npm,registry 等关键信息
➜ ~ npm docker
➜ NPM npm doctor
npm notice PING https://registry.npm.taobao.org/
Check Value Recommendation
npm ping ok
npm -v v6.14.6 Use npm v7.6.3
node -v v12.18.3 Use node v14.16.0
npm config get registry https://registry.npm.taobao.org/ Try `npm config set registry https://registry.npmjs.org/`
which git /usr/bin/git
Perms check on cached files ok
Perms check on global node_modules ok
Perms check on local node_modules ok
Verify cache contents verified 23347 tarballs
参考文章:
https://www.creativebloq.com/how-to/21-ways-to-improve-productivity-with-npm
https://github.com/sisterAn/blog/issues/75