Node.js 一行命令上传本地文件到服务器
发布于 5 年前 作者 xiaoxiaojx 5350 次浏览 来自 分享

现在存在的问题

每次打包完, 都要打开 FileZilla 一顿拖拽然后才能上传代码, 那就立马撸一个自动化脚本就完事了

publish-sftp

Github 传送门(顺便来骗个Star) 以后一行命令上传本地文件到服务器啦

publish-sftp -c // 完事

安全性

项目组已经跑了大半年, 没出过幺蛾子, 可放心使用

实现

基于 ssh2-sftp-client

快速上手

install

    sudo npm i publish-sftp -g
    sudo npm link publish-sftp

tips

当前目录下需要提供一份 sftp.json

{
    "localPath": "./dist",
    "remotePath": "/export/App/xxx",
    "protectedRemotePath": "/export/App/xxx",
    "connect": {
        "host": "xxx.xxx.xxx.xx",
        "port": 22,
        "username": "root",
        "password": "123456"
    }
}

example

image

复制 localPath 下所有文件到 remotePath/xjx/test, -c 参数为空则是复制到 remotePath, 远程目录不存在会先创建

copy

复制 localPath 下所有文件到 remotePath 目录下, 如果 xxx 有值则是复制到 ${remotePath}/${xxx} 目录

publish-sftp -c xxx

remove

删除 remotePath 目录, 如果 xxx 有值则是删除 ${remotePath}/${xxx} 目录, protectedRemotePath 目录是不允许操作的, 所以为了安全是必需要设置的, 一般和 remotePath 值一样即可!

publish-sftp -r xxx

谢谢阅读

19 回复

楼上正解。还要啥FTP

大约2009年以前见过php和java项目很多都是通过ftp部署的。服务器win和linux都有,那会ftp用的还是非常多的。

为什么不用CI/CD 工具直接从Git仓库直接pull代码而要手工打包上传??

@kenshinji 不需要把生产代码放入git仓库

Linux scp命令 挺好的, 前端项目都有node环境, publish-sftp 利于集成, 能跨平台

@kenshinji 即使除去编译后的静态文件不在代码库里,CI如果和服务器不在一个机该怎么办?说到底还是要用工具。比如ansible,针对单机楼主工具还是很不错的,很具有极客精神

@xiaoxiaojx 不明白你的意思,什么叫不把生产代码放入git仓库?能详细说说么?在我看来跟生产环境相关的只有一些配置参数啥的,这些不放到git仓库是应该的,但是代码。。。

@zy445566 没错啊,CI也能传输到生产环境服务器,这个没问题。我也没说楼主做工具不好,只是觉得专门做个工具传文件有点令人疑惑。。。

@kenshinji 我说的是打包生成的 js 代码文件, 直接上传到服务器就行了 …

服务器是Windows咋办

回到顶部