跳到主要内容

· 阅读需 3 分钟

官方网站 verdaccio

docker 安装 verdaccio

  1. 拉取镜像
docker pull verdaccio/verdaccio
  1. 运行 verdaccio
docker run -it --name verdaccio -p 4873:4873 verdaccio/verdaccio

启动成功后可以访问 4873 端口,有一个默认网站。

  1. 映射本地目录

/data/docker/verdaccio/conf 目录下新建 config.yaml 配置文件,(使用其他目录时注意下面的命令对应修改)

storage: /verdaccio/storage/data
plugins: /verdaccio/plugins

# 通过web访问
web:
title: Verdaccio-NPM

auth:
htpasswd:
file: /verdaccio/storage/htpasswd
# max_users:1000 # 最大用户数,-1为禁止注册

uplinks:
npmjs:
url: https://registry.npmjs.org

packages:
'@*/*':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs

'**':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs

sever:
keepAliveTimeout: 60

middlewares:
audit:
enabled: true

logs: { type: stdout, format: pretty, level: http }

运行命令:

docker run -it --name verdaccio -p 4873:4873 -v /data/docker/verdaccio/storage:/verdaccio/storage -v /data/docker/verdaccio/conf:/verdaccio/conf -v /data/docker/verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio

注意:/home/verdaccio/storage 需要写权限,这里面是保存的下载过的npm包。

chown -R 10001:65533 /data/docker/verdaccio/storage
  1. 其他注意事项

/data/docker/verdaccio/conf - 配置文件,可在此修改配置,修改后重启docker。

  1. 在后续使用过程中可能出现的错误

例如: http://192.168.21.46:4873/type-is 在查找 type-is 这个包的时候报错500

解决办法: 找到 /home/verdaccio/storage/data 中找到 type-is 这个文件夹然后将其删除即可。

NPM 源使用方法

  1. 在本地安装 nrm
npm install nrm -g
  1. 查看所有源
nrm ls
  1. 添加源
nrm add verdaccio http://192.168.21.46:4873
  1. 切换源
nrm use verdaccio // 使用自己安装的verdaccio源

nrm use npm // 切回npm源

注意: 此方法切换源后是全局作用,如果仅针对单个项目,可以使用 .npmrc 方式修改。

包发布与使用

  1. 在切换 verdaccio 源后,先添加用户
npm adduser

输入用户名及密码相关信息

  1. 发布包
npm publish // 注意每次发布的version
  1. 使用包

和正常的npm使用一致。

http://192.168.21.46:4873 上可查看到所有的包。

· 阅读需 1 分钟

在服务器上生成 ssh 秘钥

  1. 使用宝塔面板 ssh 管理器一键生成,生成目录 /root/.ssh/

  2. 手动生成

ssh-keygen

确定保存路径按 Enter

Enter file in which to save the key (/home/andron/.ssh/id_rsa):

输入密码

Enter passphrase (empty for no passphrase):

再次输入密码

Enter same passphrase again:

复制私钥到本地

存放秘钥到本地 C:\Users\Administrator\.ssh\ 目录,注意修改名称。

修改配置

点击设置按钮

img

选择配置文件,可配置每个服务器的连接信息

img

· 阅读需 3 分钟

在Hooks中使用 setInterval 可能会陷入一个烦人的问题:在用 setInterval 时总会偏离自己想要的效果.

Dan的博客原文:Making setInterval Declarative with React Hooks.

需求:写一个每秒递增的计数器

 function Counter() {
let [count, setCount] = useState(0);
useEffect(() => {
let timer = setInterval(() => {
setCount(count + 1);
}, 1000);

return () => clearInterval(timer);
}, [count])

return <h1>{count}</h1>;
}

· 阅读需 3 分钟

作用域

作用域是指程序源代码中定义变量的区域。

作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。

JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。