内容简介:最近在做一个脚手架的项目,涉及到了一些关于nodeJS端的操作。网上找了很多资源,以及一些设想,都在此处记录下来,作为一种总结。命令行指令操作时,需要使用到以下几个包:首先,创建一个简单的CLI脚本文件run,如下:
最近在做一个脚手架的项目,涉及到了一些关于nodeJS端的操作。网上找了很多资源,以及一些设想,都在此处记录下来,作为一种总结。 github博客
正文
脚手架指令的构建
命令行指令操作时,需要使用到以下几个包:
@oclif/command @oclif/config @oclif/plugin-help @oclif/dev-cli 复制代码
首先,创建一个简单的CLI脚本文件run,如下:
#!/usr/bin/env node require('@oclif/command').run() .then(require('@oclif/command/flush')) .catch(require('@oclif/errors/handle')); 复制代码
然后在package.json中添加配置,如下:
{ "bin": { //命令指向的脚本地址 "clitest": "./bin/run" } } 复制代码
之后,建立一个link,如下:
npm link //执行之后,会在命令行中出现clitest 复制代码
然后,逐个建立脚手架命令。例如create命令,如下:
const Command = require('@oclif/command'); class CreateCli extends Command.Command { constructor() { super(...arguments); } async run() { try { console.log('create'); } catch(err) { console.log(err); } } } CreateCli.description = 'create test'; exports.default = CreateCli; 复制代码
最后,在package.json中指明command地址,如下:
"oclif": { "commands": "./commands", "bin": "clitest", "plugins": [ "@oclif/plugin-help" ] }, "files": [ "/bin", "/commands" ], 复制代码
脚手架命令部分构建基本完毕了。如下是执行成功的图片:
nodeJS路径问题
编写脚手架的过程中,路径问题经常容易出错。下面总结了一些nodeJS中常常会使用到的路径变量:
__dirname: 指当前执行文件所在目录的完整目录名 __filename: 指当前执行文件的带有完整绝对路径的文件名 process.cwd(): 指当前执行node命令时候的文件夹目录名 ./: 指文件所在目录 os.homedir(): 指系统的home目录 复制代码
下面是一些实验的数据结果,如下:
const path = require('path'); const os = require('os'); console.log(path.resolve(__dirname)); console.log(path.resolve(__filename)); console.log(process.cwd()); console.log(os.homedir()); console.log(path.basename(__dirname)); console.log(path.basename(__filename)); 复制代码
执行结果:
监听文件
此处使用到的npm是watch。
npm install watch 复制代码
一般使用函数watch.watchTree(root)。在脚手架中,我们往往需要监听一些文件的改动情况,如下:
watch.watchTree(src, { filter: (filePath) => { // 过滤不需要被监听的文件和文件夹 // ... } }, (f, curr, prev) => { if (typeof f == "object" && prev === null && curr === null) { // Finished walking the tree } else if (prev === null) { // f is a new file } else if (curr.nlink === 0) { // f was removed } else { // f was changed } }); 复制代码
之后,我们需要对于新增文件、删除文件和文件改变中作出操作。
node端的登录和上传
此处使用到的npm是request。
npm install request 复制代码
在登录请求和上传文件的过程中,我们需要使用到formData来进行上传,但是nodeJS并无FormData的对象,所以,这里就要涉及到使用request来进行上传了。
request.post({ url, //请求接口 form: { userName: username, password: password } }, (err, response: Response, body) => { // ... }); 复制代码
同理,上传文件时,也可以通过form表单的形式上传上去。但是,一般文件上传的接口都需要登录,所以需要在带上cookie。
const j = request.jar(); j.setCookie(cookie); const req = request.post({ url, jar: j }, (err, res: Responese, body) => { // ... }); const form = req.form(); form.append(fileName, file); 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- create-react-app 脚手架构建项目,已经过程中持续总结心得
- Next.js 脚手架进阶 —— 扩展为全栈脚手架
- 前后端分离脚手架
- Angular脚手架开发
- 前端脚手架构建实践
- React脚手架搭建
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Django 1.0 Template Development
Scott Newman / Packt / 2008 / 24.99
Django is a high-level Python web application framework designed to support the rapid development of dynamic websites, web applications, and web services. Getting the most out of its template system a......一起来看看 《Django 1.0 Template Development》 这本书的介绍吧!