handlebars
模板引擎
nodemailer
邮件分发
const params = {
host: 'smtp.163.com', // 设置服务 smtp.qq.com
port: 465, // 端口
sercure: true, // 是否使用TLS,true,端口为465,否则其他或者568
// 使用发送服务的邮箱
auth: {
// 发送服务邮箱
user: '774104373@qq.com',
pass: 'sdfsdf' // 这里的密码不是登录邮箱的密码,是生成的smtp密码
}
}
// 邮件信息
const mailOptions = {
from: 'zsqmengzhihen@qq.com', // 发送邮箱
to: 'zsqmengzhihen@163.com', // 接受邮箱
subject: 'test', // 标题
html: 'test mail is link' // 内容
}
// 发送邮件
const transporter = nodemailer.createTransport(params)
transporter.sendMail(mailOptions, (err, res) => {
if (err) {
return console.log(err);
}
console.log('Message %s sent: %s', res.messageId, res.response);
// success
// ...
})
cheerio
读取html后生成虚拟DOM修改html
类似jQuery操作,可以用于写爬虫
cross-spawn
执行命令行命令,也可以开发相关小工具
例子:将yarn
的相关源切换成淘宝源
'use strict';
const spawn = require('cross-spawn');
const registry = 'https://registry.npm.taobao.org';
const MIRROR_URL = 'https://npm.taobao.org/mirrors';
const env = {
NODEJS_ORG_MIRROR: `${MIRROR_URL}/node`,
NVM_NODEJS_ORG_MIRROR: `${MIRROR_URL}/node`,
NVM_IOJS_ORG_MIRROR: `${MIRROR_URL}/iojs`,
PHANTOMJS_CDNURL: `${MIRROR_URL}/phantomjs`,
CHROMEDRIVER_CDNURL: 'http://tnpm-hz.oss-cn-hangzhou.aliyuncs.com/dist/chromedriver',
OPERADRIVER_CDNURL: `${MIRROR_URL}/operadriver`,
ELECTRON_MIRROR: `${MIRROR_URL}/electron/`,
SASS_BINARY_SITE: `${MIRROR_URL}/node-sass`,
PUPPETEER_DOWNLOAD_HOST: MIRROR_URL,
FLOW_BINARY_MIRROR: 'https://github.com/facebook/flow/releases/download/v',
npm_config_registry: registry,
yarn_registry: registry,
};
function tyarn (env) {
const processEnv = process.env;
for (const k in processEnv) {
if (!processEnv.hasOwnProperty(k) || env[k]) {
continue;
}
env[k] = processEnv[k];
}
spawn('yarn', process.argv.slice(2), {
env: env,
cwd: process.cwd(),
stdio: 'inherit',
}).on('exit', function (code) {
process.exit(code);
});
};
module.exports = tyarn;