Shell

连续脚本执行

;:连续执行脚本,前一步不影响后一步
&&:连续执行脚本,前一步失败,后一步无法执行

获取脚本文件绝对路径

  1. "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  2. //
  3. echo "$(cd "$(dirname "$0")" && pwd)"

$(dirname "${BASH_SOURCE[0]}"): 获取当前脚本,相对执行地的路径
也可以当是脚本执行路径去除脚本名剩下当路径
image.png
另外 $0${BASH_SOURCE[0]} 是相同的。

然后 cd 过去就到了脚本所在的路径,这时候就可以 pwd 获取绝对路径,也可以通过该绝对路径拼接出该路径往下的所有路径了。

Cli

打包变量注入

使用 webpack.DefinePlugin 进行 process 变量注入 js 文件:
值需要是一个有效的 JSON 字符串

  1. 'process.env': {
  2. VERSION: process.env.VERSION,
  3. NODE_ENV: process.env.NODE_ENV,
  4. },

然后从 shell 中获取变量 VERSION 到 node 执行环境:
首先 shell 中 export:

  1. export VERSION="${git_branch_name}_${commit:0:8}_${date_info}"
  2. yarn build

只要保证 shell 的执行同一空间,临时环境变量就可以共享。

TypeScript

ThisType

ThisType 来限制对具有上下文的方法的this调用的同时,也能在外部使用时获得正确的 this 推导:
使用该 type 尤其适合无 class 但需要使用 this 的场景,因为 js 的隐式上下文导致 this 是不可推导的,需要自行指定。

  1. declare function createStore<TState, TAction>(obj: {
  2. state: TState,
  3. action: TAction & ThisType<TState>,
  4. }): [
  5. () => Readonly<TState>,
  6. TAction,
  7. ];