代码工程化问题

配置react+typescript项目的lint,commit,prettier规范
前端工程化之——代码规范五部曲

vue创建的步骤
vue init webpack aaa
vue create bbb

react项目的创建步骤
create-react-app

.editorconfig

.editorconfig
.vscode

esLint

.eslintrc
.eslintignore

hushy+Lint-staged+Commitlint

"lint-staged": {
  "*": [
     "eden lint",
     "git add"
   ]
 },
"husky": {
  "hooks": {
    "pre-commit": "lint-staged" // 在代码commit前执行将加入到stage暂存区的文件进行检查,按照"lint-staged"中的规则进行检查
    "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
  }
}
commitLint

hushy

这个用4版本的比较全一些,最新8版本需要解决的问题太多

4版本可以参考 https://zhuanlan.zhihu.com/p/513741947
8版本可以参考:https://zhuanlan.zhihu.com/p/366786798
https://blog.csdn.net/pagnzong/article/details/121688379


monorepo

幽灵依赖

即某个包没有在package.json 被依赖,但是用户却能够引用到这个包。

依赖分身

相同的依赖只会在全局 store 中安装一次。项目中的都是源文件的副本,几乎不占用任何空间,没有了依赖分身。

npm

yarn

Yarn发布于2016年10月,并在Github上迅速拥有了2.4万个Star。而npm只有1.2万个Star。这个项目由一些高级开发人员维护.
它提供了离线模式.
内部依赖平铺到最外面一层,解决了上述嵌套方案的缺陷。

pnpm Store + Links

pnpm学习
store: 将包安装在系统的全局 store 中,依赖的每个版本只会在系统中安装一次。
Links:
Hard link:
Symbolic link:
pnpm 的安装速度在大多数场景都比 npm 和 yarn 快 2 倍,节省的磁盘空间也更多。
pnpm=>解决问题:
依赖结构的不确定性。
扁平化算法本身的复杂性很高,耗时较长。
幽灵依赖
依赖分身

pnpm=>弊端:
由于 pnpm 创建的 node_modules 依赖软链接,因此在不支持软链接的环境中,无法使用pnpm,比如 Electron 应用。
因为依赖源文件是安装在 store 中,调试依赖或 patch-package 给依赖打补丁也不太方便,可能会影响其他项目。
因为使用 PnP 不会再有 node_modules 了,但是 Webpack,Babel 等各种前端工具都依赖 node_modules。虽然很多工具比如 pnp-webpack-plugin 已经在解决了,但难免会有兼容性风险。
PnP 自建了依赖解析器,所有的依赖引用都必须由解析器执行,因此只能通过 yarn 命令来执行 node 脚本。

linux 硬链接和软链接的区别和联系

1、软链接以路径的形式存在,硬链接以文件副本的形式存在;
2、软链接可以跨文件系统,硬链接不可以;

你可能感兴趣的:(javascript)