专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

从0开发一个高性能前端脚手架-第四篇-脚手架本地开发流程

ins518 2024-09-24 18:13:42 技术文章 13 ℃ 0 评论

脚手架本地link标准流程

链接本地脚手架

cd your-cli-dir
npm link

链接本地库文件

cd your-lib-dir
npm link
cd your-cli-dir
npm link your-lib

取消本地链接脚手架

cd your-lib-dir
npm unlink
cd your-cli-dir
# link存在
npm unlink your-lib
# link不存在
rm -rf node_modules
npm install -S your-lib

理解npm link:

1.npm link your-lib :将当前项目中 node_modules 下指定的库文件链接到 node 全局 node_modules 下的库文件

2.npm link :将当前项目链接到 node 全局 node_modules 中作为一个库文件,并解析 bin 配置创建可执行文件

理解 npm unlink:

1.npm unlink:将当前项目从 node 全局 node_modules 移除

2.npm unlink your-lib :将当前项目中的库文件依赖移除

脚手架命令注册和参数解析

实现注册一个命令:curry-cli-test init

1.首先在 cli-test-lib 项目下 定义一个 init 方法

module.exports = {
    init(){
        console.log('执行init流程')
    }
}

2.在 cli-test 中 注册 init 命令

#!/usr/bin/env node

const lib = require('cli-test-lib');

// 注册一个命令 curry-cli-test init

const argv = require('process').argv;

const command = argv[2];

console.log(command)
if(command){
    if(lib[command]){
        lib[command](); 
    }else{
        console.log('无效的命令')
    }
}else{
    console.log('请输入命令')
}

现在在终端输入 curry-cli-test init

在终端输入 curry-cli-test publish

在终端输入 curry-cli-test

实现带参数的命令:curry-cli-test --name vue-test

1.在 cli-test 中 注册

#!/usr/bin/env node

const lib = require('cli-test-lib');

// console.log(lib.sum(1,2))
// 注册一个命令 curry-cli-test init

const argv = require('process').argv;

const command = argv[2];


// 获取 --name vue-test
const options = argv.slice(3);
let [option, param ] =options;

option = option.replace('--','')

console.log(command)
if(command){
    if(lib[command]){
    		// 给 init 方法传入 参数
        lib[command]({ option, param }); 
    }else{
        console.log('无效的命令')
    }
}else{
    console.log('请输入命令')
}

2.在cli-test-lib中 init 方法 引入参数

 init({ option, param }){
        console.log('执行init流程',  option, param)
    }

此时在终端执行 curry-cli-test init --name vue-test。就可以拿到传入的参数了。

实现 --version

// 实现参数解析 --version
if(command.startsWith('--') || command.startsWith('-')){
    const globalOption = command.replace(/--|-/g,'')
    if(globalOption === 'version' || globalOption === 'V'){
        console.log('1.0.0')
    }
}

效果如下:



本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表