2024/02/01

·NodeNPMRegexp

Node.js graceful shutdown

process.on('SIGTERM', () => { console.info('SIGTERM signal received.'); console.log('Closing http server.'); server.close(() => { console.log('Http server closed.'); }); });

NPM Binary Mirror

# === NPM BINRAY CHINA === # https://github.com/cnpm/binary-mirror-config/blob/master/package.json#L48 export NODEJS_ORG_MIRROR="https://cdn.npmmirror.com/binaries/node" export NVM_NODEJS_ORG_MIRROR="https://cdn.npmmirror.com/binaries/node" export PHANTOMJS_CDNURL="https://cdn.npmmirror.com/binaries/phantomjs" export CHROMEDRIVER_CDNURL="https://cdn.npmmirror.com/binaries/chromedriver" export OPERADRIVER_CDNURL="https://cdn.npmmirror.com/binaries/operadriver" export ELECTRON_MIRROR="https://cdn.npmmirror.com/binaries/electron/" export ELECTRON_BUILDER_BINARIES_MIRROR="https://cdn.npmmirror.com/binaries/electron-builder-binaries/" export SASS_BINARY_SITE="https://cdn.npmmirror.com/binaries/node-sass" export SWC_BINARY_SITE="https://cdn.npmmirror.com/binaries/node-swc" export NWJS_URLBASE="https://cdn.npmmirror.com/binaries/nwjs/v" export PUPPETEER_DOWNLOAD_HOST="https://cdn.npmmirror.com/binaries" export SENTRYCLI_CDNURL="https://cdn.npmmirror.com/binaries/sentry-cli" export SAUCECTL_INSTALL_BINARY_MIRROR="https://cdn.npmmirror.com/binaries/saucectl" export npm_config_sharp_binary_host="https://cdn.npmmirror.com/binaries/sharp" export npm_config_sharp_libvips_binary_host="https://cdn.npmmirror.com/binaries/sharp-libvips" export npm_config_robotjs_binary_host="https://cdn.npmmirror.com/binaries/robotj"

Escape Regex

function escapeRegex(str: string) { return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') }