Skip to content

Instantly share code, notes, and snippets.

View banyudu's full-sized avatar
🎯
Focusing

Yudu banyudu

🎯
Focusing
View GitHub Profile
@banyudu
banyudu / nvm.sh
Created July 24, 2020 05:26
nvm ls-remote时缺少版本的解决方案
export NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist
# 注意这是个临时方案
@banyudu
banyudu / gitlab-open-mr-in-ci.sh
Created August 4, 2020 04:54
Create merge request in gitlab ci
#!/usr/bin/env bash
# Extract the host where the server is running, and add the URL to the APIs
[[ $CI_PROJECT_URL =~ ^https?://[^/]+ ]] && CI_PROJECT_URL="${BASH_REMATCH[0]}/api/v4/projects/"
# Look which is the default branch
#TARGET_BRANCH=`curl --silent "${CI_PROJECT_URL}${CI_PROJECT_ID}" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" | python3 -c "import sys, json; print(json.load(sys.stdin)['default_branch'])"`;
TARGET_BRANCH="develop"
# The description of our new MR, we want to remove the branch after the MR has
# been closed
@banyudu
banyudu / http-proxy-unpkg.js
Last active August 22, 2020 03:41
代理unpkg的资源
const app = require('express')();
const path = require('path')
const fs = require('fs')
const { createProxyMiddleware } = require('http-proxy-middleware');
const mcache = require('memory-cache')
const getCacheFilePath = req => path.join('cache', Buffer.from(req.originalUrl || req.url).toString('base64') )
app.use('/unpkg', (req, res, next) => {
req.cacheFilePath = getCacheFilePath(req)
@banyudu
banyudu / deep_proxy.js
Created August 17, 2020 04:20
ES6 Deep Proxy
const _ = require('lodash')
const protectCache = new Set()
const protect = (val) => {
return new Proxy(val, {
get: function (obj, prop) {
// recursive
const value = obj[prop]
if ((_.isPlainObject(value) || Array.isArray(value)) && !protectCache.has(value)) {
const result = protect(value)
protectCache.add(result)
@banyudu
banyudu / setup-simple-proxy-server-with-nodejs.blog.md
Created August 19, 2020 06:14
使用Node.js搭建一个简单的转发服务

使用Node.js搭建一个简单的转发服务

背景

最近因工作需要,想要在内网开发环境访问到npm包的内部文件。

我的第一反应当然是使用大名鼎鼎的unpkg啦,它可以方便地访问到任意版本的任意文件,甚至还支持dist-tag自动跳转。

@banyudu
banyudu / debug-frontend-with-resource-override.blog.md
Last active December 26, 2022 18:31
前端调试方法之偷天换日

前端调试方法之偷天换日

本文中提出了一种调试前端应用的思路,适用于常见的SPA应用,已经在工作中使用了两个月且表现良好,供读者参考。

背景

一般来说,调试前端应用有两种套路:

@banyudu
banyudu / es6-deep-proxy.blog.md
Created August 23, 2020 04:26
ES6 Deep Proxy

ES6 Deep Proxy

ES6中有一个新特性,叫做Proxy。可以用来定义基本操作的自定义行为,如属性查找、赋值、枚举、函数调用。

基本用法

Proxy的基本用法还是挺简单的,比如说用它实现一个 getter / setter。

@banyudu
banyudu / webpack-banner-terser-conflict.blog.md
Created August 28, 2020 09:09
Webpack中设置banner信息

Webpack中设置banner信息

基本用法

在webpack输出的js中添加banner信息,尤其是一些版本信息,有时是能够辅助调试问题的。

本来设置banner是很简单的,webpack官方有文档:

@banyudu
banyudu / free-docker-space-in-wsl2.blog.md
Last active March 20, 2026 12:07
WSL2 Docker释放磁盘空间

WSL2 Docker释放磁盘空间

Docker使用久了,会残留很多中间生成的镜像,占用磁盘空间。

要清理Docker镜像,本来是挺简单的,一条命令就搞定了:

@banyudu
banyudu / batch-update-code-with-ts-morph.blog.md
Created September 15, 2020 09:01
使用ts-morph批量修改代码

使用ts-morph批量修改代码

重构代码时的痛点

在重构项目、推行代码规范等过程中,经常会出现批量修改代码的需求,将代码从一种形式转换成另一种形式。

举例来说: