basic-ftp是Node.js的FTP客户端。它支持TLS上的FTPS,IPv6上的被动模式,具有基于承诺的API,并提供对整个目录进行操作的方法。
deploy.js代码如下:
#!/usr/bin/env node
const path = require('path');
const ftp = require('basic-ftp');
const chalk = require('chalk');
(async () => {
// 当前工作目录的绝对路径
const projectDir = path.resolve();
// 当前工作目录的文件夹名
const createDir = path.basename(projectDir);
// dist路径-已打包需上传的代码路径
const pagePath = path.resolve(process.cwd(), './dist/');
// 在ftp的目录路径
const remote = `/site/act/${createDir}`;
const ftpConfig = {
host: '***.***.***.***',
port: 21,
user: '用户名',
password: '密码',
};
const client = new ftp.Client();
// 将调试级别的信息记录到控制台 通过覆盖 client.ftp.log 来使用自己的日志记录库
client.ftp.verbose = true;
await client.access(ftpConfig);
const remoteDir = path.posix.resolve(remote);
// ensureDir -- 确认(remoteDir)目录是否存在于服务器上,并根据需要创建所有目录
await client.ensureDir(remoteDir);
// 上传文件
await client.uploadDir(pagePath);
const message = `https://test.website.com/${createDir}`;
console.log(chalk.green('Please visit:'));
console.log(chalk.green(message));
client.close();
})();
然后packages.json文件中scripts对象新建
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "cross-env NODE_ENV=development webpack-dev-server --open --config ./webpackConfig/webpack.dev.js",
"build": "cross-env NODE_ENV=production webpack --config ./webpackConfig/webpack.prod.js",
"deploy": "node ./webpackConfig/deploy"
},