Em nosso exercício anterior, criamos uma extensão do navegador usando o TypeScript. Isso envolveu uma série de etapas, incluindo a criação de um projeto vite e a personalização para atender aos requisitos específicos das extensões do navegador. Embora o processo não tenha sido particularmente demorado ou complexo, podemos simplificá -lo ainda mais, automatizando -o com uma CLI do nó (interface da linha de comando). Se você é novo no CLIS, deixe -me orientá -lo através do que eu criei!
naturalmente, o primeiro passo é inicializar e configurar nosso projeto de nó. Use os seguintes comandos para criar uma pasta para o nosso código e gerar um arquivo básico Package.json:
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesEm seguida, decidi modificar o package.json gerado para incluir "type": "Module". Com isso, informaremos o Node para interpretar os arquivos .js no projeto como módulos ES, em vez de módulos Commonjs. Aqui está o package.json atualizado depois de fazer alguns ajustes.
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesPrimeiros passos
create-project em uma nova pasta chamada bin :
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesEste arquivo atuará como o ponto de entrada para o seu comando e para garantir que ele possa ser
executado diretamente no seu computador Depois que o pacote for instalado globalmente, adicione o seguinte campo ao package.json:
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesagora é hora de testar o que criamos até agora. Primeiro, instalamos o pacote localmente em execução:
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesUma vez vinculado, você terá um novo comando da CLI chamado Create-Browser-Extension-Vite, que atualmente apenas imprime "Hello World" no console.
e isso é o suficiente para criar uma CLI básica! A partir daqui, você pode aproveitar todo o poder do ecossistema do nó para construir qualquer coisa que possa imaginar.
Manuseio de entrada do usuário
crie-project arquivo:
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesPara otimizar o processo de coleta de preferências do usuário, usaremos duas bibliotecas úteis:
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yes
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesdeixarei para você adicionar uma opção extra para exibir uma mensagem de ajuda básica. Isso envolverá a introdução de uma nova preferência do usuário controlada pelo parâmetro --help ou -h. Se esse parâmetro for fornecido, a CLI deve exibir um manual simples, explicando o uso do comando. Você pode se referir à minha solução no repositório vinculado abaixo.
Criando o projeto
A estrutura da pasta deve ficar assim e você pode encontrar o conteúdo desses arquivos no meu repositório do GitHub. Se você está curioso sobre como eles foram criados, confira meu post anterior, onde discuto a construção de uma extensão do navegador com o TypeScript.
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yes
import { createProject } from "./main.js"; ... export async function cli(args) { let options = parseArgumentsIntoOptions(args); options = await promptForMissingOptions(options); await createProject(options); }importar giz de "giz"; importar NCP do "NCP"; Importar caminho de "Path"; importar {promisify} de "util"; importação {Execa} de "Execa"; importar Lists de "Lists"; importar {ProjectInstall} de "PKG-Install"; const copy = promisify (ncp); Função assíncreada copyTemplateFiles (Opções) { Return Copy (Options.Templatedirectory, Options.TargetDirectory, { CLOBBER: FALSO, }); } Função assíncreada initgit (options) { const resultado = aguarda Execa ("git", ["init"], { CWD: options.targetDirectory, }); if (resultado.Failed) { return promey.reject (novo erro ("falhou em inicializar o git")); } retornar; } exportar função assíncroada createproject (options) { opções = { ... opções, TargetDirectory: Options.ProjectName || process.cwd (), }; const currentfileurl = import.meta.url; const modeatedir = path.resolve ( novo URL (currentFileurl) .PathName, "../../modelo" ); options.templateirectory = modelo; Const Tasks = New Lists ([ { Título: "Copiar arquivos de projeto", Tarefa: () => copyTemplateFiles (Opções), }, { Título: "Inicialize Git", tarefa: () => initgit (opções), ativado: () => options.git, }, { Título: "Instale dependências", Tarefa: () => ProjectInstall ({ CWD: options.targetDirectory, }), pular: () => ! options.runinstall ? "Passe -Instalar para instalar automaticamente dependências" : indefinido, }, ]); aguarda tarefas.run (); console.log ("%s Project Ready", chalk.green.Bold ("feito"); retornar true; }
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yesO código acima utiliza o LISR para executar a série de ações necessárias para gerar o novo projeto, desde copiar arquivos com o NCP até a configuração do repositório Git. Observe também como usamos o Promisify para converter o método de cópia baseado em retorno de chamada do NCP em uma função baseada em promessa, tornando o código mais legível e sustentável.
e é isso! Essas são as etapas que segui para criar minha nova ferramenta da CLI, a que eu usarei para otimizar a criação das minhas novas extensões de navegador. Você também pode usá -lo! Porque eu o publiquei no NPM para qualquer um gerar suas próprias extensões.
https://github.com/ivaneffable/create-browser-extension-vite
Referências
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3