抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

每次创建项目都要搞一大阵子,太烦了,找个脚手架二开吧!

参考:简易脚手架搭建 - SegmentFault 思否

去GitHub拉下来代码:GitHub - ZnFrontEnd/zn-cli: 锌脚手架

大体轮廓

目录结构:

├── LICENSE.txt
├── README.md
├── bin
│   └── fe.js
├── lib
│   ├── cli
│   │   └── index.js
│   ├── cmd
│   │   ├── add.js
│   │   ├── delete.js
│   │   ├── init.js
│   │   └── list.js
│   ├── table.js
│   └── tip.js
├── package-lock.json
├── package.json
└── template.json

在package.json中可以看到入口文件是./bin/fe.js

#!/usr/bin/env node

const tip = require('../lib/tip');

const currentNodeVersion = process.versions.node;
const semver = currentNodeVersion.split('.');
const major = semver[0];
const BASE_VERSION = 10;

if(major < BASE_VERSION) {
  tip.fail(
    'You are running Node ' +
      currentNodeVersion +
      '.\n' +
      'Create React/Vue App requires Node '+ BASE_VERSION +' or higher. \n' +
      'Please update your version of Node.'
  )
  process.exit(1);
}

require('../lib/cli/');

这里有一些环境检测,继续追踪到lib/cli/index.js

#!/usr/bin/env node

'use strict';

const program = require('commander');
const packageJson = require('../../package.json');

program
  .version(packageJson.version)

program
  .command('init')
  .description('生成一个项目')
  .alias('i')
  .action(() => {
    require('../cmd/init')();
  });

program
  .command('list')
  .description('查看模板列表')
  .alias('l')
  .action(() => {
    require('../cmd/list')();
  });

program
  .command('add')
  .description('添加模板')
  .alias('a')
  .action(() => {
    require('../cmd/add')();
  });

program
  .command('delete')
  .description('删除模板')
  .alias('d')
  .action(() => {
    require('../cmd/delete')();
  });

program.parse(process.argv);

if(!program.args.length){
  program.help();
}

注册了init、list、add、delete四个命令。

对应实现都在cmd里了。

里面也没啥意思了,好像全网一个模板。

二开?

这几个够我用的了,有需求再说吧。

我把作者的模板删了,添加了两份自己的

> h-cli list

模板列表:


┌─────────┬───────────────────┬─────────────────────────────────────────────────────────────────┐
│ name    │ description       │ url                                                             │
├─────────┼───────────────────┼─────────────────────────────────────────────────────────────────┤
│ webpage │ test              │ https://e.coding.net/dailycode/coding-demo/websiteTemplate.git  │
├─────────┼───────────────────┼─────────────────────────────────────────────────────────────────┤
│ ts-node │ typescript-nodejs │ https://e.coding.net/dailycode/coding-demo/ts-node-template.git │
└─────────┴───────────────────┴─────────────────────────────────────────────────────────────────┘

对了,我修改了原本zn-cli的命令,改成了h-cli,在package.json入口bin的位置,改完了npm link一下就能用了。

屏幕录制2021-10-04 下午8

评论