webpack 入门 - (二)

开发一个工具   --  输入命令行 mycli create -t vue -n shop 创造vue模板的项目,项目名称为shop

1、建立模板项目文件夹,用来放置项目模板 project

 

 2、index.js文件,,命令行配置

#!/usr/bin/env node  
//需求 命令行 mycli create -t vue -n shop 创造vue模板的项目,项目名称为shop
let program = require('commander')
let createProject = require('./createProject')
program.version('0.0.0')
    .option('-t,--type <name>','project type')
    // .option('-n,--type <name>','project type')
program
    .command('create <name>')
    .action(function(name){
        createProject(name, program.type)
        console.log(name,program.type)
    })
program.parse(process.argv)

3、复制项目的代码文件 createProject.js

let chalk = require('chalk') 
let fs = require('fs')
let path = require('path')
require('shelljs/global')

var log = function(txt){
    console.log(chalk.magenta.bold(txt))
}

function createProject(name,type){
    var p = process.cwd(); //找到当前执行命令的位置
    cd(p) //进入路径

    if(fs.existsSync(name)){ //判断当前路径是否存在该项目,如果有,需重命名退出
        log('project exist,please rename it')
        process.exit()
    }

    var np = path.join(__dirname,'project',type) //拼接地址
    cp('-R',np + '/', name) //复制,
    log('复制' + type + '项目文件成功')

    cd(name)

    log('设置淘宝镜像 -- npm config set registry http://registry.npm.taobao.org')
    exec('npm config set registry http://registry.npm.taobao.org')

    log('安装模块 --- npm install')
    log('安装模块时间较长,请耐心等待,也可 Ctrl+C 停止安装,手动 npm install 安装')
    log('安装模块中。。。')
    exec('npm install')

    if(type != 'jquery'){
        log('正在启动项目')
        exec('npm start')
    }

}

module.exports = createProject

4、执行命令  “mycli create vue -t vue”,,会在当前目录下生成vue项目

posted @ 2019-12-27 15:59  SlightFly  阅读(137)  评论(0编辑  收藏  举报