获得徽章 0
赞了这篇文章
#挑战每日一条沸点# Monorepo
Monorepo是把多个项目放在一个仓库里,相对立的是MultiRepo 模式,即每个项目对应一个单独的仓库来分散管理。
Vue 3、Yarn、Npm7 等知名开源项目的源码采用的是 Monorepo 方式进行管理。
Monorepo 给现代的前端工程带来的收益:
1.工作流的一致性。由于所有的项目放在一个仓库当中,复用方便。如果有依赖的代码变动,那么用到这个依赖的项目当中会立马感知到。并且所有的项目都是使用最新的代码,不会产生其它项目版本更新不及时的情况。
2.项目基建成本的降低,所有项目复用一套标准的工具和规范,无需切换开发环境,如果有新的项目接入,也可以直接复用已有的基建流程,只需要少量人来维护所有项目的基建。
3.方便团队协作。
整理自:
juejin.cn
Monorepo是把多个项目放在一个仓库里,相对立的是MultiRepo 模式,即每个项目对应一个单独的仓库来分散管理。
Vue 3、Yarn、Npm7 等知名开源项目的源码采用的是 Monorepo 方式进行管理。
Monorepo 给现代的前端工程带来的收益:
1.工作流的一致性。由于所有的项目放在一个仓库当中,复用方便。如果有依赖的代码变动,那么用到这个依赖的项目当中会立马感知到。并且所有的项目都是使用最新的代码,不会产生其它项目版本更新不及时的情况。
2.项目基建成本的降低,所有项目复用一套标准的工具和规范,无需切换开发环境,如果有新的项目接入,也可以直接复用已有的基建流程,只需要少量人来维护所有项目的基建。
3.方便团队协作。
整理自:
展开
评论
1
#挑战每日一条沸点# package.json配置——第三方配置
1.types / typings
指定 TypeScript 的类型定义的入口文件。
2.unpkg
可让 npm 上所有的文件都开启 CDN 服务。
3.jsdelivr
与 unpkg 类似。
4.browserslist
设置项目的浏览器兼容情况。babel 和 autoprefixer 等工具会使用该配置对代码进行转换,也可以用 .browserslistrc 单文件配置。
5.sideEffects
显示设置某些模块具有副作用,用于 webpack 的 tree-shaking 优化。
6.lint-staged
用于对 git 的暂存区的文件进行操作的工具,通常配合 husky 这样的 git-hooks 工具一起使用。
整理自:
juejin.cn
1.types / typings
指定 TypeScript 的类型定义的入口文件。
2.unpkg
可让 npm 上所有的文件都开启 CDN 服务。
3.jsdelivr
与 unpkg 类似。
4.browserslist
设置项目的浏览器兼容情况。babel 和 autoprefixer 等工具会使用该配置对代码进行转换,也可以用 .browserslistrc 单文件配置。
5.sideEffects
显示设置某些模块具有副作用,用于 webpack 的 tree-shaking 优化。
6.lint-staged
用于对 git 的暂存区的文件进行操作的工具,通常配合 husky 这样的 git-hooks 工具一起使用。
整理自:
展开
评论
1
#挑战每日一条沸点# package.json配置——依赖配置
1.dependencies
运行依赖,即项目生产环境下需要用到的依赖。
使用 npm install xxx 或则 npm install xxx --save 时,会被自动插入到该字段中。
2.devDependencies
开发依赖,项目开发环境需要用到而运行时不需要的依赖,用于辅助开发。
使用 npm install xxx -D 或者 npm install xxx --save-dev 时,会被自动插入到该字段中。
3.peerDependencies
同伴依赖,不会被自动安装,常用于表示与另一个包的依赖与兼容性关系来警示使用者。
4.optionalDependencies
可选依赖,它不会阻塞主功能的使用,安装或者引入失败也无妨。这类依赖即使安装失败,npm的整个安装过程也是成功的。
使用 npm install xxx -O 或者 npm install xxx --save-optional 时会被自动插入到该字段中。
5.peerDependenciesMeta
同伴依赖也可用 peerDependenciesMeta 将其指定为可选。
6.bundleDependencies
打包依赖。其值是一个数组,在发布包时,bundleDependencies 里面的依赖都会被一起打包。
7.overrides
可以重写项目依赖的依赖,及其依赖树下某个依赖的版本号,进行包的替换。支持任意深度的嵌套。
整理自:
juejin.cn
1.dependencies
运行依赖,即项目生产环境下需要用到的依赖。
使用 npm install xxx 或则 npm install xxx --save 时,会被自动插入到该字段中。
2.devDependencies
开发依赖,项目开发环境需要用到而运行时不需要的依赖,用于辅助开发。
使用 npm install xxx -D 或者 npm install xxx --save-dev 时,会被自动插入到该字段中。
3.peerDependencies
同伴依赖,不会被自动安装,常用于表示与另一个包的依赖与兼容性关系来警示使用者。
4.optionalDependencies
可选依赖,它不会阻塞主功能的使用,安装或者引入失败也无妨。这类依赖即使安装失败,npm的整个安装过程也是成功的。
使用 npm install xxx -O 或者 npm install xxx --save-optional 时会被自动插入到该字段中。
5.peerDependenciesMeta
同伴依赖也可用 peerDependenciesMeta 将其指定为可选。
6.bundleDependencies
打包依赖。其值是一个数组,在发布包时,bundleDependencies 里面的依赖都会被一起打包。
7.overrides
可以重写项目依赖的依赖,及其依赖树下某个依赖的版本号,进行包的替换。支持任意深度的嵌套。
整理自:
展开
评论
1
#挑战每日一条沸点# package.json配置——文件配置
1.files
项目在进行 npm 发布时,可以通过 files 指定需要跟随一起发布的内容来控制 npm 包的大小,避免安装时间太长。发布时默认包括 package.json,license,README 和main 字段里指定的文件。忽略 node_modules,lockfile 等文件。
2.type
在 node 支持 ES 模块后,要求 ES 模块采用 .mjs 后缀文件名。如果不想修改文件后缀,可以在 package.json文件中指定 type 字段为 module。
3.main
项目发布时,默认会包括 package.json,license,README 和main 字段里指定的文件。如果不设置 main 字段,那么入口文件就是根目录下的 index.js。
4.browser
main 字段里指定的入口文件在 browser 和 Node 环境中都可以使用。如果只想在 web 端使用,可以通过 browser 字段指定入口。
5.exports
node 在 14.13 支持在 package.json 里定义 exports 字段,拥有了条件导出的功能。exports 字段可以配置不同环境对应的模块入口文件,并且当它存在时优先级最高。
6.workspaces
项目的工作区配置,用于在本地的根目录下管理多个子项目。可以自动地在 npm install 时将 workspaces 下面的包软链到根目录的 node_modules 中,不用手动执行 npm link 操作。
整理自:
juejin.cn
1.files
项目在进行 npm 发布时,可以通过 files 指定需要跟随一起发布的内容来控制 npm 包的大小,避免安装时间太长。发布时默认包括 package.json,license,README 和main 字段里指定的文件。忽略 node_modules,lockfile 等文件。
2.type
在 node 支持 ES 模块后,要求 ES 模块采用 .mjs 后缀文件名。如果不想修改文件后缀,可以在 package.json文件中指定 type 字段为 module。
3.main
项目发布时,默认会包括 package.json,license,README 和main 字段里指定的文件。如果不设置 main 字段,那么入口文件就是根目录下的 index.js。
4.browser
main 字段里指定的入口文件在 browser 和 Node 环境中都可以使用。如果只想在 web 端使用,可以通过 browser 字段指定入口。
5.exports
node 在 14.13 支持在 package.json 里定义 exports 字段,拥有了条件导出的功能。exports 字段可以配置不同环境对应的模块入口文件,并且当它存在时优先级最高。
6.workspaces
项目的工作区配置,用于在本地的根目录下管理多个子项目。可以自动地在 npm install 时将 workspaces 下面的包软链到根目录的 node_modules 中,不用手动执行 npm link 操作。
整理自:
展开
评论
1