包名怎么还不一样?
今天看了一下node_modules下面的包,怎么有的包名前面带‘@’,而有的就没有呢
node_modules
去查了一下,带‘@’说明时官方产的,比如
@ant-design
,这表示这是ant-design官方维护的,毕竟任何人都可以向 npm 中发布自己的包,npm中那么多包,主要可以分清是官方的包还是个人的包。
在看看node_modules下的目录里面各个目录是啥意思吧
.bin
第一种理解 可执行文件的替身都生成在这里 (参考)
.bin目录下的loose-envify文件其实是cli.js文件的替身
.bin
第二种理解(参考)
.bin 目录,这个目录不是任何一个 npm 包。目录下的文件,表示这是一个个软链接,打开文件可以看到文件顶部写着 #!/bin/sh ,表示这是一个脚本
那就再说点额外的话题
当执行npm run xxx
的时候,先找package.json下srcipt字段中对应的命令,比如下图执行了webpack-dev-server
命令,npm run dev
执行 webpack-dev-server
时,虽然没有安装 webpack-dev-server
的全局命令,但是 npm 会到 ./node_modules/.bin
中找到 webpack-dev-server
文件作为脚本来执行,则相当于执行了 ./node_modules/.bin/webpack-dev-server
执行命令
.cache 编译缓存包
有时候在启动项目时发生一些莫名的错误,清除浏览器缓存不好使,可以清除编译缓存试试
手动删除.cache文件或者执行以下操作
rm -rf node_modules
npm cache clean
npm install
.staging 临时存储位置
.staging
是在运行过程中出现的,当真正install所有包之后,node_modules里面的包就会显示正常,也就是说,出现这个就是没有加载完。当依赖彻底下载完之后,.staging
的文件夹会自动消失
如果安装完还是只有.staging
,需要删除packjson-lock文件,删除node_modules文件夹,然后重新 npm install