文章目录
lerna安装及项目初始化
lerna是各大开源项目常用的npm项目包管理工具,非常值得研究和学习。
cnpm i -g lerna
# 项目初始化,记得添加.gitignore
lerna init
# 创建package包
lerna create utils
# 为包添加依赖
lerna add lodash
# 为 package/core/ 添加 vue 依赖
lerna add vue package/core/
# 清空所有包的依赖
lerna clear
# 重新安装依赖
lerna bootstrap
# 在每个包的package.json中写好依赖关系及版本号,lerna link会为每个package创建彼此之间的依赖关系
lerna link
# lerna exec 为每个包执行命令
lerna exec -- rm -rf node_modules/
# 在指定的 @attack-i/core 包中执行命令
lerna exec --scope @attack-i/core -- rm -rf node_modules/
# lerna run 在每个包中执行npm scripts
lerna run test
# 在指定的 @attack-i/core 包中run script
lerna run --scope @attack-i/core test
lerna version
# 查看上本来依赖的所有变更
lerna changed
# 查看diff
lerna diff
# 发布
lerna publish
更多命令及详情中可以去readme文档中查看
node原生方法和属性
- fs.statSync / fs.lstatSync
- fs.accessSync(path)
- fs.realpathSync() // 根据相对路径,返回绝对路径(如果是软链接,会一直寻到最终路径)
- fs.toRealPath() // 调用生成真实路径,判断是否存在
- Module._nodeModulePaths(path) // 返回path各层级的node_modules路径数组
- Module._resolveFilename(filename) // 返回文件的真实路径
- NativeModule.canBeRequiredByUsers(request) // 是否是内置模块
- Module._resolveLookupPaths(request, parent) // 返回一个数组,当前模块可能存在的所有路径,将当前模块文件路径各层级的node_modules目录数组和node环境变量中的node_modules数组合并,这是一个有顺序的数组,离path最近的一层目录为首位
- process.cwd() // 当前进程运行目录
第三方
- import-local //查询是否是本地的包
- pkg-dir // 查找当前文件或者目录层级最近的package.json
- find-up
- path-exists
- locate-path
- resolve-cwd