Shell
连续脚本执行
;
:连续执行脚本,前一步不影响后一步&&
:连续执行脚本,前一步失败,后一步无法执行
获取脚本文件绝对路径
"$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
//
echo "$(cd "$(dirname "$0")" && pwd)"
$(dirname "${BASH_SOURCE[0]}")
: 获取当前脚本,相对执行地的路径
也可以当是脚本执行路径去除脚本名剩下当路径
另外 $0
和 ${BASH_SOURCE[0]}
是相同的。
然后 cd 过去就到了脚本所在的路径,这时候就可以 pwd 获取绝对路径,也可以通过该绝对路径拼接出该路径往下的所有路径了。
Cli
打包变量注入
使用 webpack.DefinePlugin 进行 process 变量注入 js 文件:
值需要是一个有效的 JSON 字符串
'process.env': {
VERSION: process.env.VERSION,
NODE_ENV: process.env.NODE_ENV,
},
然后从 shell 中获取变量 VERSION 到 node 执行环境:
首先 shell 中 export:
export VERSION="${git_branch_name}_${commit:0:8}_${date_info}"
yarn build
只要保证 shell 的执行同一空间,临时环境变量就可以共享。
TypeScript
ThisType
ThisType 来限制对具有上下文的方法的this调用的同时,也能在外部使用时获得正确的 this 推导:
使用该 type 尤其适合无 class 但需要使用 this 的场景,因为 js 的隐式上下文导致 this 是不可推导的,需要自行指定。
declare function createStore<TState, TAction>(obj: {
state: TState,
action: TAction & ThisType<TState>,
}): [
() => Readonly<TState>,
TAction,
];