文件模块的解析流程
- 不同的版本对文件模块的解析流程往往不一样
- 会先找同级别是否存在该文件,文件找不到,会找文件夹
- 如果文件夹下面存在package.json,查看package.json中的main字段对应的文件,会执行此文件
- 如果没有package.json文件,执行此文件夹下面的index.js文件,备注:对于有些版本,即使存在package.json中,即使存在main,也仍然会去执行index.js文件
模块分类
- 分为第三方模块、核心模块、自定义模块
- 核心模块不需要安装,第三个模块需要安装,自定义模块一般带./或者…/标识
- 第三方模块分为全局模块和项目模块,安装的时候指定参数
-g
的为全局模块,否则就是项目模块
node版本管理工具nvm
尝试写一个包
- 项目必须要存在一个bin目录,新建一个www文件
- www文件中需要写
#! /use/bin/env node
,意思是从本地的环境变量中使用node来作为执行环境 - package.json中新增bin字段,指定执行命令,如果不指定,默认就是package.json的name字段对应的value
- 测试,需要把自己的包链接到全局,使用
npm linkl
,会把包链接到全局的node_modules下面,这也就可以使用命令执行了 - 发布,执行npm addUser登录,执行
npm publish
发布 - 删除包,执行
npm unpublish
- 升级包,需要更新包的版本号,再次发布
package.json与package-lock.json
- package.json,包的描述信息,里面记录了项目所需要的开发依赖、生产依赖、同版本依赖peerDependencies、捆绑依赖 bundleDependencies(打包依赖)
- package-lock.json,锁定依赖的安装版本,当项目发给别人的时候,保证别人执行install安装的版本和你的一样
依赖分类
- 开发依赖
- 生产依赖(项目依赖)
- 同版本依赖,比如vue2依赖的vue-template-compiler版本号为2,若想把vue2升级到了3,则也需要把模板编译器升级到版本3,再升级vue到3版本的时候,会给出警告提示。
- 捆绑依赖。默认执行
npm pack
的不会把node_modules打包进压缩包中,如果想把哪个依赖打包进去,需要把其放到bundleDependencies - –save-dev,简写为-D,安装开发依赖,也就是只在开发时需要,上线之后不在使用的模块
- –save。简写为-S,安装生产依赖,生产需要的模块,默认为此。
npm install production
只安装生产依赖
npm run发生了什么
- 对于那些没有全局安装的模块,再命令行中无法使用,要想让其可以使用,需要放到全局的npm目录下面
- 执行npm run的时候,默认会把项目下面的node_modules目录下面的bin目录下面的目录放到全局path
为什么npm i -g之后,就可以在全局使用命令
- npm的安装目录再系统的环境变量中,也就说npm下面的命令是可以全局执行的
npm i -g
安装的包会直接安装到npm目录下面,这样就可以直接使用了
npm命令
- npm root -g 查看npm安装再系统的哪个路径
- path 查看系统的环境变量
- npm run dev
yarn和npm的关系
- yarn依赖npm
- 不要把yarn和npm混用,会造成丢包的风险
npx
- node5.2版本之后赠送的
- 比如执行
npx mime xxx.js
,会去执行项目的node_modules下面bin目录下面的命令,如果没有,会去先安装,和npm相比,多了一个下载的功能