媒介
通过自动化繁琐的设置和设置工作,资助开辟者快速启动新项目。常见的Node脚手架工具包罗Yeoman、Express Generator、Create React App等。
一、什么是脚手架
1、什么是脚手架?
脚手架在软件开辟中指的是一种自动化工具或脚本,用于快速创建和设置项目的基本结构和设置文件。脚手架工具可以资助开辟者快速启动新项目,淘汰手动设置和重复工作,进步开辟效率。
2、脚手架的基本能力
根据预定义的模板天生项目的目次结构和初始文件
自动天生和更新项目的依赖文件(如package.json),并安装必要的依赖包
创建项目所需的各种设置文件(如.eslintrc, .gitignore, webpack.config.js等)。
自动天生常见的代码模块和样板代码,如路由、控制器、模子等。
通过交互式问答方式询问用户的偏好和需求,从而天生定制化的项目设置。
提供一些预定义的NPM脚本或其他自动化脚本,用于常见的开辟使命(如构建、测试、启动服务器等)。
二、搭建脚手架
1、如何实现一个自己的脚手架工具
- ? Select a framework: » - Use arrow-keys. Return to submit.
- Vanilla
- > Vue
- React
- Preact
- Lit
- Svelte
- Solid
- Qwik
- Others
复制代码
- ? Select a variant: » - Use arrow-keys. Return to submit.
- TypeScript
- > JavaScript
- Customize with create-vue ↗
- Nuxt ↗
复制代码
- Done. Now run:
- cd vite-project
- npm install
- npm run dev
复制代码 2、创建自定义全局指令
- 新建一个nojs文件,然后创建bin/cli.js
- 在nojs文件下初始化一个项目,然后一路回车
#! /usr/bin/env node的作用:告诉操纵系统用什么解释器来执行文件。
#! 是 shebang 的标记,/usr/bin/env 是一个 Unix 程序,它可以找到并运行指定的程序,node 指定要利用 Node.js 解释器来执行脚本。
当在文件顶部加上这一行并使文件可执行,可以直接运行该文件,而无需在下令行中显式调用 node 下令。
- #! /usr/bin/env node
- console.log("bincli
- ");
复制代码
- #! /usr/bin/env node
- // console.log("bincli
- ");
- console.log(process.argv);
复制代码 获取bincli
后面的参数--help
- #! /usr/bin/env node
- if(process.argv[2]=='--help'){
- console.log("获取命令参数");
- }
复制代码 三、commander下令参数处置处罚工具
1、安装commander包
commander包链接
- #! /usr/bin/env node
- const { program } = require("commander");
- program.parse(process.argv);
复制代码
2、自定义下令参数处置处罚
- #! /usr/bin/env node
- const { program } = require("commander");
- /*
- 使用 .option 方法定义一个命令行选项。
- -f 是短选项,--framework 是长选项,<framework> 表示这个选项需要一个参数。
- "设置框架" 是对这个选项的描述,用于帮助信息中显示。
- */
- program.option("-f --framwork <framwork>", "设置框架");
- // 解析传递给脚本的命令行参数
- program.parse(process.argv);
- console.log(`选定的框架是: ${program.framework}`);
复制代码
3. create创建一个内容下令
- #! /usr/bin/env node
- const { program } = require("commander");
- program.option("-f --framwork <framwork>", "设置框架");
- program
- .command("create <project> [other...]")
- .alias("crt")
- .description("创建项目")
- .action((project, args) => {
- console.log(project);
- console.log(args);
- });
- program.parse(process.argv);
复制代码
- 执行bincli
create xxx k gf l 下令
四、模块化拆分
1、代码封装
- const myhelp = function (program) {
- program.option("-f --framwork <framwork>", "设置框架");
- };
- module.exports = myhelp;
复制代码- const myAction = require("./action");
- const mycommander = function (program) {
- program
- .command("create <project> [other...]")
- .alias("crt")
- .description("创建项目")
- .action(myAction);
- };
- module.exports = mycommander;
复制代码- const myAction = (project, args) => {
- console.log(project);
- console.log(args);
- };
- module.exports = myAction;
复制代码- #! /usr/bin/env node
- const { program } = require("commander");
- const myhelp = require("../lib/core/help");
- myhelp(program);
- const mycommander = require("../lib/core/mycommander");
- mycommander(program);
- program.parse(process.argv);
复制代码
2、下令行问答交互
- var inquirer = require("inquirer");
- // console.log(inquirer.default.prompt, "inquirer.prompt");
- inquirer.default
- .prompt([
- {
- type: "input", // 可以输入的类型
- name: "username",
- message: "你的名字",
- },
- ])
- .then((answer) => {
- console.log(answer);
- });
复制代码
- 执行node test/inquirer.js
下令
3、下令行自定义选择框架
- var inquirer = require("inquirer");
- const myAction = (project, args) => {
- // console.log(project);
- // console.log(args);
- inquirer.default
- .prompt([
- {
- type: "list",
- name: "framwork",
- choices: ["express", "koa", "egg"],
- message: "请选择你所使用的框架",
- },
- ])
- .then((answer) => {
- console.log(answer, "answer");
- });
- };
- module.exports = myAction;
复制代码
- 执行bincli
create nodefm 下令
4、利用config.js来定义框架设置类型
利用config.js来定义框架设置类型,可以通过直接在config.js里修改来控制变量
- module.exports = {
- framwork: ["express", "koa", "egg"],
- };
复制代码
- 修改lib/core/action.js文件引入config文件
- var inquirer = require("inquirer");
- var config = require("../../config");
- const myAction = (project, args) => {
- // console.log(project);
- // console.log(args);
- inquirer.default
- .prompt([
- {
- type: "list",
- name: "framwork",
- choices: config.framwork,
- message: "请选择你所使用的框架",
- },
- ])
- .then((answer) => {
- console.log(answer, "answer");
- });
- };
- module.exports = myAction;
复制代码 五、下载长途仓库代码
1、download-git-repo包利用
download-git-repo 是一个 Node.js 模块,用于从 Git 仓库中下载代码。通过下令行大概在 Node.js 代码中进行下载操纵。
- npm install download-git-repo
复制代码
- Node.js 脚本中引入 download-git-repo 模块,新建test/download.js
- const download = require("download-git-repo");
- download(
- "direct:git@github.com:Muying-Zhao/MuYing-docs.git",
- "./xxx",
- { clone: true },
- function (err) {
- if (err) {
- console.error("下载失败", err);
- } else {
- console.log("下载成功");
- }
- }
- );
复制代码
- 执行node test/download.js
下令
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |