você deve primeiro garantir que haja um ambiente node.js no computador
e executar o seguinte código na linha de comando para inicializar um arquivo package.json
npm init -y
. Neste momento, um erro será definitivamente relatado quando. executando mycli
na linha de comando.
Configure o comando personalizado
package.json
para adicionar o campo bin
e associe mycli
.
"bin": {. "mycli": "./test.js" },
/test.js
console.log ("comando mycli executado com sucesso");
install
é necessário, mas o projeto não foi publicado no npm, portanto, por enquanto, use o comando npm link
para associe mycli
ao mundo global.Neste momento, se você executar mycli
na linha de comando, o erro não será mais relatado.
Arquivo test.js
de configuração do script
:console.log("execução do comando mycli bem-sucedida");
Em seguida, execute mycli
e uma janela pop-up de erro aparecerá.
Isso ocorre porque ao executar o comando mycli
, é equivalente a deixar o computador executar o arquivo, e o sistema do computador não pode executar diretamente o arquivo js . Isso exige que adicionemos uma configuração à primeira linha do código do script para especificar node.js
no programa do computador para executar este arquivo de script js.
#!/usr/bin/env node
Como o ambiente de execução mycli
alterado, você precisa excluir os arquivos vinculados anteriormente. O local do arquivo pode ser C:Program Filesnodejsnode_modules
. npm link
novamente.
Agora execute mycli
no console novamente e você verá que o console é impresso corretamente.
Chalk
para gerar fontes coloridasOra
efeito de carregamento, semelhante àcommander
inquirer
(como: fazer perguntas...)do Chalk
npm install [email protected] -S
const giz = require("giz"); // giz // const olá = giz.red("olá"); // const olá = giz.blue.bgRed("olá"); // const olá = giz.blue.bgYellow("olá"); const olá = giz.rgb(200, 200, 200).bgRgb(0, 200, 3)("olá"); console.log(olá);
do Ora
npm install [email protected] -S
const ora = require("ora"); // ora const spinner = ora({ texto: "Instalando..." }); spinner.start(); setTimeout(() => { //spinner.stop(); spinner.succeed("Instalação bem sucedida"); // console.log("Instalação bem sucedida"); }, 2000)
start
inicia o carregamentostop
interrompe o carregamentosucceed
termina o carregamento com estilo bem-sucedidode comandantes
, como vue -V
git --version
vue create
e outros comandos, precisam usar a biblioteca do comandante para implementar tais comandos.
-V
--help
, etc. após o comando usado pode ser entendido como os parâmetros do comando. Então precisamos obter esses parâmetros e lidar com diferentes eventos julgando as diferenças nos parâmetros.
No ambiente do nó , este parâmetro pode ser obtido através de process.argv
. A biblioteca do comandante nos ajuda a encapsular alguns métodos sem que tenhamos que julgar as instruções transportadas pela entrada do usuário.
npm install [email protected] -S
const comandante = require("commander"); // ... comandante.parse(process.argv); // Após
a conclusão da instalação, o comandante nos fornecerá automaticamente alguns comandos, como --help
. Vamos testar abaixo:
mycli --help
do comandante. . version("1.0.0");
Execute mycli -V
e você verá que o console imprime o número da versão 1.0.0
.
O método de comando personalizado
commander.option(指令名, 描述, 回调函数)
--init
:comandante.option("--init", "this is init", () => { // giz // const olá = giz.red("olá"); // const olá = giz.blue.bgRed("olá"); // const olá = giz.blue.bgYellow("olá"); const olá = giz.rgb(200, 200, 200).bgRgb(0, 200, 3)("olá"); console.log(olá); // ora const spinner = ora({ texto: "Instalando..." }); spinner.start(); setTimeout(() => { //spinner.stop(); spinner.succeed("Instalação bem sucedida"); // console.log("Instalação bem sucedida"); }, 1000) })
Agora execute o teste mycli --init
:
é comandante.option("--number <num>", "log a number", (num) => { console.log(num); })
<参数名>
indica os parâmetros que devem ser passados e [参数名]
indica os parâmetros que não precisam ser passados. Digite mycli --number 100
no console e pressione Enter. Você pode ver 100
será gerado.
Método de comando personalizado
comandante.command("create <projectName>").action((projectName)=>{ console.log(nomedoprojeto); })
Execute mycli create xx
e pressione Enter. Você pode ver xx
é gerado no console.
Veja a ajuda
executando mycli --help
. Você pode ver que as instruções e comandos que acabamos de configurar aparecem na lista de ajuda.
do inquiridor
npm instalar inquiridor -S
prompt
para perguntarao inquiridor.prompt([ { tipo: "entrada", nome: "nome de usuário", mensagem: "Por favor, digite o nome de usuário:" } ]).então((resposta)=>{ })
type
indica o tipo de pergunta, e o valor pode ser: input
, number
, password
, editor
, etc.
answer
é {username: 输入的值}
input
do tipo de entradaconst investigador = require("inquirer"); comandante.command("adicionar usuário").action(() => { investigador.prompt([ { tipo: "entrada", nome: "nome de usuário", mensagem: "Por favor, digite o nome de usuário:" } ]).então((resposta) => { console.log(resposta); }) })
confirm
comandante.command("testcon").action(() => { investigador.prompt([ { digite: "confirmar", nome: "idade", mensagem: "Você tem mais de 18 anos?" } ]).então((resposta) => { console.log(resposta); }) })
Digite y
ou n
para fazer um julgamento.
list
de tipos de seleção de rádiocomandante.command("testlist").action(() => { investigador.prompt([ { tipo: "lista", nome: "lib", mensagem: "Selecione a estrutura a ser usada:", escolhas: [ "vue2", "vue3", "reagir", "esbelto", ] } ]).então((resposta) => { console.log(resposta); }) })
Execute o comando mycli testlist
:
download-git-repo é uma ferramenta para extrair código.
Instale
npm install [email protected] -S
const downgit = require("download-git-repo"); downgit("github:kongcodes/vue3-vant", downUrl, { clone: falso }, função (err) { console.log(erro) })
O primeiro parâmetro no método downgit
é o download do modelo de projeto vue3-vant
do usuário kongcodes do github. O segundo parâmetro downUrl
é o diretório para o qual o modelo deve ser baixado. O terceiro parâmetro clone
é usar git clone
para fazer download. O quarto parâmetro são algumas coisas a serem executadas quando o download for concluído.
command
comandante.command("create <projectName>").action((projectName) => {em conjunto com o método de comando
const spinner = ora({ texto: "Baixando https://github.com/kongcodes/vue3-vant..." }); spinner.start(); fs.mkdirSync(`./${nome do projeto}`); const downUrl = `${process.cwd()}\${projectName}`; downgit("github:kongcodes/vue3-vant", downUrl, { clone: falso }, função (err) { se (errar) lançar errar; spinner.stop(); console.log(chalk.green("downgit sucesso")); }) })
Execute mycli create pro
e pressione Enter. O diretório pro
será criado no diretório atual e vue3-vant
será baixado para este diretório.
https://github.com/kongcodes/mycli