npm实用知识_命令合集
前言
npm 作为前端一大利器,那必须是要好好掌握,在平时的开发中,用的最多的应该就是 npm install,不过,这么强大的工具,作用肯定不止如此。
现将自己所知道的有关 npm 的知识给整理出来,大都是平时用的很多的,整合出来不仅是方便查找,更重要的是身为社会主义的接班人,少先队员所应具备的良好品质也在时刻提醒我,要为社会作出应有的贡献。写到这,我不禁低头一看,胸口的红领巾好像更红了,太阳公公好像也在向我微笑点头。
在开始前还要再说一下,合集会持续更新,因为知识总是不断在补充的。但也不会频繁更新,一般会攒个大再放,持续更新,建议收藏,文章会放在我的 blog 文集里,blog 里面还是会快速更新的啦。
再多嘴一句,windows 的同学可以试试 windows 的命令行神器 cmder,这可以减少很多使用 windows 原生命令行时奇怪的错误。
vi设计http://www.maiqicn.com 办公资源网站大全https://www.wode007.com
命令合集
强烈建议最好不要使用 cnpm,会有各种奇怪的 bug,相对 cnpm,给 npm 设置 registry 是一个好选择,使用 nrm 是更好的选择。
npm init 创建基础 package.json
# 会用命令行交互式完成创建
npm init
# 直接略过交互式,使用 defaultValue 创建 package.json
npm init -y
node 运行时内存溢出
在运行内存比较小的电脑上可能你会碰到内存溢出导致程序被 kill 的场景,使用 --max-old-space-size 或许可以解决这个问题。
{
"scripts": {
"start": "node --max-old-space-size=4076 index.js"
}
}
当然,如果说 package.json 中 scripts 中的命令很多,你就需要在每个地方增加该指令,已经有 issue 提到了该问题,或许在 node 之后的版本会解决这个问题。
Add max-old-space-size to npmrc
再者,我们不仅可以在 scripts 中添加,还可以在执行命令中添加,如下,一个命令行类库的 bin 目录下的执行文件。
#!/usr/bin/env node --max-old-space-size=4096
const cli = require("../src").default;
cli.run();
npm publish 发布 npm 包
这里只列出发布的步骤,具体怎么写 npm 包可以到网上搜搜相关内容,各路大佬已经整理了不少,博主就不在此班门弄斧了。
需要注意的是,我们需要先把 registry 切换到 npm 起始源,而不能使用 taobao 的,taobao 是同步了 npm 包的国区资源,实际资源还是来自 npm,所以需要先发布到 npm 再等 taobao 自动同步(顺便可以刷一波下载量)。
# 切换 registry 至 npm
nrm use npm
# 第一次使用 npm publish
# 如果你是第一次使用 npm publish,你需要添加账号
npm adduser
# 非第一次使用 npm publish
# 登陆账户,这一步其实也可以不用做,直接看 whoami 即可
npm login
# 查看当前账户
npm whoami
# 发布
npm publish
npm view 查看某一库详细信息
对打了 tag 的库还是挺方便的,可以查看对应 tag 名称,如果需要安装某一个具体 tag 的库,可以使用 npm install ${packageName}@${tag}
npm view @vue/cli
# 查看 view 之后,安装指定 tag
npm install -D @vue/cli@next
npm root 获取当前项目的 node_modules 路径
可以在命令行类库中使用,会向上查找 node_modules 的路径,并返回绝对路径。
但是也是有 bug 的,如果你在空文件夹下使用 npm root,会直接以当前路径加上 node_modules 返回,即使你的目录下并没有 node_modules 文件夹。
npm root
举个例子,如果在很深的路径中,需要使用当前项目依赖的 node_modules/.bin 中的指令,我们有两个办法找到目录
const moduleRootPath = path.join(process.cwd(), "node_modules");
const moduleRootPath = execa.sync("npm", ["root"]);
npm list 查看全局安装的模块
npm list -g --depth=0
删除全局安装的所有模块
慎用,除非你知道你在做什么,否则不要用。
rm -rf /usr/local/lib/node_modules
npm cache 清除 npm 缓存
报错 npm resource busy or locked 时候,或者其他莫名报错的时候,可以试试看。
# force 表强制清除缓存
npm cache clean --force
好库推荐
排名不分先后,会按照博主的记忆顺序来记录。其中有命令行工具,还有好用的三方库推荐,大抵不会有主流三大框架的三方库(你们懂得肯定比我多),会以 node 类库为主。
yarn 依赖处理工具
这么好用的东西不说太多了,大部分人应该都用着,对标 npm,可以更好的处理项目依赖(但是也发现有情况是 npm 可以安装成功,yarn 安装反而报错)。
甩上命令,一个字就是冲。
npm install yarn -g
# 安装 devdep 依赖
yarn add -D @types/node
# 安装 dep 依赖
yarn add axios
# 安装 peerDep 依赖
# peerDep 依赖意思是,如果你安装了我,那你最要也安装 XXX
yarn add -P vue
# 全局安装依赖
yarn global add @vue/cli
mirror-config-china 自动配置国区镜像
在下载某些库的时候发现即使配置了 registry 的时候,下载还是异常缓慢,甚至半天都不动一下?你可能需要这个。
这个库会自动配置很多第三方库(例如 electron)的地址到国区镜像,虽然也可以在需要的时候手动配置,但是,有一键操作那还要啥自行车!下载速度嗖嗖嗖。
npm install -g mirror-config-china
nrm 管理 registry
当你经常需要切换 registry 源(比如你需要 npm publish 代码,这时候就需要切换到 npm 起始源),这个工具可以帮忙。
npm install -g nrm
# 添加 npm registry 至 nrm
nrm add npm http://registry.npmjs.org
# 添加 taobao registry 至 nrm
nrm add taobao https://registry.npm.taobao.org
# 使用 taobao 的 registry
nrm use taobao
# 使用 npm 的 registry
nrm use npm
http-server 快起静态服务
可以很方便的在本地起一个静态服务,当然还有很多参数,这里就不多做演示,只做个抛砖引玉,具体可以查看以下文档。
http-server
npm install -g http-server
举个小例子,当你兴高采烈开发完一个项目打包至 dist,想要看看效果如何,你就可以进入 dist 文件夹,然后启动 http-server 服务,他会默认以 index.html 作为入口启动静态服务,并且还会监听文件改变。
cd dist
http-server
nvm 管理多版本 node
虽然可能不多见,但是你还是会碰到需要在同一台电脑上运行不同版本的 node 这种问题,这个库可以解决。
# 查看当前使用的 node 版本
nvm current
# 安装 node 指定版本
nvm install 12.14.0
# 切换 node 版本
nvm use 12.14.0
# 使用 12.14.0 版本的 node 运行 index.js
nvm run 12.14.0 index.js