前端工程化

工程化相关

包管理器

Npm/Yarn

Npm发包

files

指定哪些文件会被打包发布(后面详细描述)。

main、browser、exports、module

这四个字段都是用来定义包的入口,npm 只规定了 mainbrowser 这两个字段,exportsnodejs 的规范,module 一般被构建工具所支持。

main

main 规定了包的主要入口点,默认值为 index.js

如果你的包名为 foo 可以通过 require("foo") 引入对应模块导出的内容,所以这应该是个 CommonJS 模块,除非你设置了 "type": "module"

Pnpm

  • 省空间
  • 解决幽灵依赖

如何确定一个项目的包管理工具?

  • lock文件、package.json下packageManager字段来判断

如何确定包管理工具的版本号?

  • engines字段

打包工具

CommonJs和Esmodule的区别

CJS:运行时加载

Esmodule:编译时加载

CI/CD

npm scripts

package.json

peerDependencies

  • 项目安装的某个依赖存在peerDependencies,项目又没有声明这个依赖,那项目会自动安装吗,会autoinstall

github action

deploy