1、首先說下為什么要做自己的腳手架:
a) 公司項(xiàng)目大部分公共可以復(fù)用
b) 每次搭建項(xiàng)目花時(shí)間太多,時(shí)間都花在webpack配置上面啦
2、我們需要的腳手架的功能--->只需要下載項(xiàng)目結(jié)構(gòu)代碼就好
3、思路:
a) 準(zhǔn)備好腳手架模板
b) 把腳手架模板放到GitHub或者其他git服務(wù)器
c) 最后執(zhí)行一句(xx-cli init 'project name') 可以下載模板
4、開始擼代碼(在網(wǎng)上找了很多腳手架帖子,發(fā)現(xiàn)都太復(fù)雜啦, 不是我想要的。 我只是需要簡單的下載項(xiàng)目的模板就好)
一、準(zhǔn)備一個(gè)npm賬號(hào)(沒有自己去npm官網(wǎng)去注冊)
二、將準(zhǔn)備好的模板代碼放到git服務(wù)器(您可以放到GitHub,自己的git服務(wù)器)
三、創(chuàng)建一個(gè)空文件夾在里面執(zhí)行npm init(初始化項(xiàng)目),生產(chǎn)一個(gè)package.json文件
四、在package.json文件加上
....
"bin": {
"xxx-cli": "index.js"
},
....
五、使用第三方庫:
child_process -執(zhí)行shll命令
commander --注冊命令-很強(qiáng)大的一個(gè)庫
//執(zhí)行下面代碼
npm install commander child_process --save
六、新建一個(gè)index.js放入以下代碼:
const program = require('commander');
var process1 = require('child_process');
//version 版本號(hào)
//name 新項(xiàng)目名稱
program.version('1.0.0', '-v, --version')
.command('init <name>')
.action((name) => {
console.log('clone template ...');
process1.exec('git clone (git 下載地址) ' + name, function(error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
return;
}
console.log(stdout);
console.log('clone success');
});
});
program.parse(process.argv);
七、發(fā)布npm
//執(zhí)行
npm login

//登錄成功后執(zhí)行
npm publish
八、發(fā)布完成后您就可以執(zhí)行以下代碼測試?yán)玻?/p>
//先全局安裝您的xx-cli
npm install xx-cli -g
//安裝完成后執(zhí)行下面代碼看下版本
xx-cli -v
//最后執(zhí)行-看下面結(jié)果截圖
xx-cli init <Project Name>
測試版本截圖

效果圖:

如果需要復(fù)雜的腳手架可以擴(kuò)展?。。。?!不喜勿噴
個(gè)人喜好把~~~~?。。。?!
如有問題,歡迎大家,可以加Q討論哦:1366379285,加好友備注“簡書”
長沙地區(qū)可以加微信群:
