Node Js开辟情况的搭建

打印 上一主题 下一主题

主题 1070|帖子 1070|积分 3214

媒介

   通过自动化繁琐的设置和设置工作,资助开辟者快速启动新项目。常见的Node脚手架工具包罗Yeoman、Express Generator、Create React App等。
  一、什么是脚手架

1、什么是脚手架?

   脚手架在软件开辟中指的是一种自动化工具或脚本,用于快速创建和设置项目的基本结构和设置文件。脚手架工具可以资助开辟者快速启动新项目,淘汰手动设置和重复工作,进步开辟效率。
  

  • 全局下令行工具
  • 创建项目初始化代码文件及目次
2、脚手架的基本能力


  • 项目模板天生
   根据预定义的模板天生项目的目次结构和初始文件
  

  • 依赖管理
   自动天生和更新项目的依赖文件(如package.json),并安装必要的依赖包
  

  • 设置文件天生
   创建项目所需的各种设置文件(如.eslintrc, .gitignore, webpack.config.js等)。
  

  • 代码天生
   自动天生常见的代码模块和样板代码,如路由、控制器、模子等。
  

  • 交互式问答
   通过交互式问答方式询问用户的偏好和需求,从而天生定制化的项目设置。
  

  • 自动化脚本
   提供一些预定义的NPM脚本或其他自动化脚本,用于常见的开辟使命(如构建、测试、启动服务器等)。
  二、搭建脚手架

1、如何实现一个自己的脚手架工具



  • 初始化一个vite项目
  1. npm init
  2. vite@latest
复制代码


  • 选择vue
  1. ? Select a framework: » - Use arrow-keys. Return to submit.
  2.     Vanilla
  3. >   Vue
  4.     React
  5.     Preact
  6.     Lit
  7.     Svelte
  8.     Solid
  9.     Qwik
  10.     Others
复制代码


  • 选择JavaScript
  1. ? Select a variant: » - Use arrow-keys. Return to submit.
  2.     TypeScript
  3. >   JavaScript
  4.     Customize with create-vue ↗
  5.     Nuxt ↗
复制代码


  • 通过以下下令运行项目
  1. Done. Now run:
  2.   cd vite-project
  3.   npm install
  4.   npm run dev
复制代码
2、创建自定义全局指令


  • 新建一个nojs文件,然后创建bin/cli.js
  • 在nojs文件下初始化一个项目,然后一路回车
  1. npm init
复制代码

  • 在package.json中添加一个name
  1. "name": "bincli
  2. ",
复制代码

  • bin/cli.js中写入,
   #! /usr/bin/env node的作用:告诉操纵系统用什么解释器来执行文件。
#! 是 shebang 的标记,/usr/bin/env 是一个 Unix 程序,它可以找到并运行指定的程序,node 指定要利用 Node.js 解释器来执行脚本。
当在文件顶部加上这一行并使文件可执行,可以直接运行该文件,而无需在下令行中显式调用 node 下令。
  1. #! /usr/bin/env node
  2. console.log("bincli
  3. ");
复制代码

  • 创建自定义全局指令
  1. npm link
  2. bincli
复制代码


  • 修改cli.js文件
  1. #! /usr/bin/env node
  2. // console.log("bincli
  3. ");
  4. console.log(process.argv);
复制代码
  获取bincli
后面的参数--help
  1. bincli
  2. --help
复制代码


  • 获取到cli.js中的下令参数
  1. #! /usr/bin/env node
  2. if(process.argv[2]=='--help'){
  3.   console.log("获取命令参数");
  4. }
复制代码
三、commander下令参数处置处罚工具

1、安装commander包

commander包链接

  • 安装commander
  1. npm i commander
复制代码

  • cli.js文件内容修改
  1. #! /usr/bin/env node
  2. const { program } = require("commander");
  3. program.parse(process.argv);
复制代码
  1. bincli
  2. --help
复制代码

2、自定义下令参数处置处罚


  • 修改cli.js内容
  1. #! /usr/bin/env node
  2. const { program } = require("commander");
  3. /*
  4. 使用 .option 方法定义一个命令行选项。
  5. -f 是短选项,--framework 是长选项,<framework> 表示这个选项需要一个参数。
  6. "设置框架" 是对这个选项的描述,用于帮助信息中显示。
  7. */
  8. program.option("-f --framwork <framwork>", "设置框架");
  9. // 解析传递给脚本的命令行参数
  10. program.parse(process.argv);
  11. console.log(`选定的框架是: ${program.framework}`);
复制代码

  • 执行bincli
    --help

    下令

3. create创建一个内容下令


  • 修改cli.js
  1. #! /usr/bin/env node
  2. const { program } = require("commander");
  3. program.option("-f --framwork <framwork>", "设置框架");
  4. program
  5.   .command("create <project> [other...]")
  6.   .alias("crt")
  7.   .description("创建项目")
  8.   .action((project, args) => {
  9.     console.log(project);
  10.     console.log(args);
  11.   });
  12. program.parse(process.argv);
复制代码

  • 执行bincli
    create xxx k gf l 下令


  • 执行bincli
    --help

    下令

四、模块化拆分

1、代码封装


  • lib/core/help.js
  1. const myhelp = function (program) {
  2.   program.option("-f --framwork <framwork>", "设置框架");
  3. };
  4. module.exports = myhelp;
复制代码

  • lib/core/mycommander.js
  1. const myAction = require("./action");
  2. const mycommander = function (program) {
  3.   program
  4.     .command("create <project> [other...]")
  5.     .alias("crt")
  6.     .description("创建项目")
  7.     .action(myAction);
  8. };
  9. module.exports = mycommander;
复制代码

  • lib/core/action.js
  1. const myAction = (project, args) => {
  2.   console.log(project);
  3.   console.log(args);
  4. };
  5. module.exports = myAction;
复制代码

  • bin/cli.js
  1. #! /usr/bin/env node
  2. const { program } = require("commander");
  3. const myhelp = require("../lib/core/help");
  4. myhelp(program);
  5. const mycommander = require("../lib/core/mycommander");
  6. mycommander(program);
  7. program.parse(process.argv);
复制代码

  • 执行bincli
    下令
  1. bincli
复制代码

2、下令行问答交互


  • 安装inquirer包
  1. npm install inquirer
复制代码

  • 新建test/inquirer.js文件
  1. var inquirer = require("inquirer");
  2. // console.log(inquirer.default.prompt, "inquirer.prompt");
  3. inquirer.default
  4.   .prompt([
  5.     {
  6.       type: "input", // 可以输入的类型
  7.       name: "username",
  8.       message: "你的名字",
  9.     },
  10.   ])
  11.   .then((answer) => {
  12.     console.log(answer);
  13.   });
复制代码

  • 执行node test/inquirer.js
    下令
  1. node test/inquirer.js
复制代码

3、下令行自定义选择框架


  • 修改lib/core/action.js文件
  1. var inquirer = require("inquirer");
  2. const myAction = (project, args) => {
  3.   // console.log(project);
  4.   // console.log(args);
  5.   inquirer.default
  6.     .prompt([
  7.       {
  8.         type: "list",
  9.         name: "framwork",
  10.         choices: ["express", "koa", "egg"],
  11.         message: "请选择你所使用的框架",
  12.       },
  13.     ])
  14.     .then((answer) => {
  15.       console.log(answer, "answer");
  16.     });
  17. };
  18. module.exports = myAction;
复制代码

  • 执行bincli
    create nodefm 下令
  1. bincli
  2. create nodefm
复制代码

  • 通过上下箭头选择,空格进行确认


4、利用config.js来定义框架设置类型

   利用config.js来定义框架设置类型,可以通过直接在config.js里修改来控制变量
  

  • 新建config.js文件
  1. module.exports = {
  2.   framwork: ["express", "koa", "egg"],
  3. };
复制代码

  • 修改lib/core/action.js文件引入config文件
  1. var inquirer = require("inquirer");
  2. var config = require("../../config");
  3. const myAction = (project, args) => {
  4.   // console.log(project);
  5.   // console.log(args);
  6.   inquirer.default
  7.     .prompt([
  8.       {
  9.         type: "list",
  10.         name: "framwork",
  11.         choices: config.framwork,
  12.         message: "请选择你所使用的框架",
  13.       },
  14.     ])
  15.     .then((answer) => {
  16.       console.log(answer, "answer");
  17.     });
  18. };
  19. module.exports = myAction;
复制代码
五、下载长途仓库代码

1、download-git-repo包利用

   download-git-repo 是一个 Node.js 模块,用于从 Git 仓库中下载代码。通过下令行大概在 Node.js 代码中进行下载操纵。
  

  • 安装模块
  1. npm install download-git-repo
复制代码

  • Node.js 脚本中引入 download-git-repo 模块,新建test/download.js
  1. const download = require("download-git-repo");
  2. download(
  3.   "direct:git@github.com:Muying-Zhao/MuYing-docs.git",
  4.   "./xxx",
  5.   { clone: true },
  6.   function (err) {
  7.     if (err) {
  8.       console.error("下载失败", err);
  9.     } else {
  10.       console.log("下载成功");
  11.     }
  12.   }
  13. );
复制代码

  • 执行node test/download.js
    下令
  1. node test/download.js
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表