{"id":232199,"date":"2023-01-09T12:13:00","date_gmt":"2023-01-09T09:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232199"},"modified":"2023-01-14T11:58:14","modified_gmt":"2023-01-14T08:58:14","slug":"publique-um-modulo-deno-em-3-etapas-rapidas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/publique-um-modulo-deno-em-3-etapas-rapidas\/","title":{"rendered":"Publique um m\u00f3dulo Deno em 3 etapas r\u00e1pidas"},"content":{"rendered":"\n<p>Um dos principais recursos do Deno \u00e9 que ele n\u00e3o depende de um servidor de pacotes centralizado como o Node.js fez com o npm. Qualquer um pode publicar um m\u00f3dulo em seu pr\u00f3prio servidor e \u00e9 muito simples us\u00e1-los, gra\u00e7as ao Deno resolvendo URLs para m\u00f3dulos. Vamos ver como criar, publicar e usar nosso primeiro m\u00f3dulo Deno.<\/p>\n<h2>O que s\u00e3o m\u00f3dulos Deno?<\/h2>\n<p>Os m\u00f3dulos Deno s\u00e3o partes que voc\u00ea pode baixar e usar em seu projeto, semelhantes aos pacotes Node.js. Eles podem variar de uma fun\u00e7\u00e3o simples a algo complexo como Oak, uma estrutura de middleware para o m\u00f3dulo http do Deno.<\/p>\n<p>O Deno fornece um conjunto de m\u00f3dulos padr\u00e3o, como o m\u00f3dulo http, que s\u00e3o revisados \u200b\u200bpela equipe principal do Deno. Estes s\u00e3o garantidos para trabalhar junto com uma vers\u00e3o espec\u00edfica do Deno e viver no mesmo\u00a0 reposit\u00f3rio <a href=\"https:\/\/github.com\/denoland\/deno\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">denoland\/deno<\/a> onde o c\u00f3digo-fonte do Deno pode ser encontrado.<\/p>\n<p>Os m\u00f3dulos padr\u00e3o est\u00e3o hospedados em <a href=\"https:\/\/deno.land\/std\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">deno.land\/std<\/a> e podem ser acessados \u200b\u200bvia URLs como todos os outros m\u00f3dulos ES compat\u00edveis com Deno.<\/p>\n<p>Mas o Deno tamb\u00e9m suporta m\u00f3dulos de terceiros como Oak que voc\u00ea pode importar de qualquer local na web, como GitHub, um servidor web pessoal ou um CDN como <a href=\"https:\/\/pika.dev\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pika.dev<\/a> ou <a href=\"https:\/\/jspm.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jspm.io<\/a>.<\/p>\n<p>Para facilitar o consumo de m\u00f3dulos de terceiros, o Deno fornece algumas ferramentas integradas como <code>deno info<\/code>e <code>deno doc<\/code>. Al\u00e9m disso, o site da Deno tamb\u00e9m fornece uma interface do usu\u00e1rio da web para visualiza\u00e7\u00e3o da documenta\u00e7\u00e3o do m\u00f3dulo, dispon\u00edvel em <a href=\"https:\/\/doc.deno.land\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">doc.deno.land<\/a>.<\/p>\n<p>O site tamb\u00e9m fornece um servi\u00e7o de hospedagem p\u00fablica simples para m\u00f3dulos ES compat\u00edveis com Deno que podem ser encontrados em <a href=\"https:\/\/deno.land\/x\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">deno.land\/x<\/a>.<\/p>\n<h2>Escrevendo seu m\u00f3dulo Deno<\/h2>\n<p>Antes de publicar, precisamos escrever nosso m\u00f3dulo. Vamos criar um simples para reverter uma sequ\u00eancia de palavras. Se inserirmos &#8220;This is fun&quot; ele retornar\u00e1 &#8220;fun is This&#8221;. Muito simples. Crie uma nova pasta e o arquivo para o seu m\u00f3dulo nela:<\/p>\n<pre><code>mkdir reverse-words\ncd reverse-words\ntouch mod.ts<\/code><\/pre>\n<p>Edite <code>mod.ts<\/code>em seu <a href=\"https:\/\/startfunction.com\/tag\/ide\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IDE<\/a> ou editor de c\u00f3digo de sua prefer\u00eancia, usarei o <a href=\"https:\/\/startfunction.com\/tag\/vs-code\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VS Code<\/a>. Cole isso nele:<\/p>\n<pre><code>const reverseWords = (str: String) =&gt;\n  str.split(\" \").reduce(\n    (revStr: Array, word: String) =&gt; [word, ...revStr],\n    [],\n  ).join(\" \");\nexport default reverseWords;<\/code><\/pre>\n<p>Observe que este \u00e9 o c\u00f3digo <a href=\"https:\/\/startfunction.com\/tag\/typescript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TypeScript<\/a>. Um dos grandes recursos do Deno \u00e9 que ele suporta TypeScript nativamente. Como na pr\u00f3xima etapa publicaremos nosso m\u00f3dulo Deno no GitHub, talvez voc\u00ea queira adicionar um simples <code>README.md<\/code>com algumas informa\u00e7\u00f5es sobre ele.<\/p>\n<h2>Publique seu m\u00f3dulo Deno<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158004-61e6c7eb03544.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158004-61e6c7eb03544.png\" alt=\"Publique um m\u00f3dulo Deno em 3 etapas r\u00e1pidas\"><\/a><\/p>\n<p>Um passo final antes de publicar seu m\u00f3dulo, caso voc\u00ea esteja interessado em envi\u00e1-lo para o reposit\u00f3rio do Deno, \u00e9 garantir que ele esteja formatado de acordo com o padr\u00e3o de formata\u00e7\u00e3o do Deno. Para fazer isso, voc\u00ea pode dizer ao Deno para formatar seu c\u00f3digo executando:<\/p>\n<pre><code>deno fmt mod.ts<\/code><\/pre>\n<p>Vamos publicar o m\u00f3dulo no GitHub e baix\u00e1-lo de l\u00e1 em nosso projeto Deno. Corre:<\/p>\n<pre><code>git init\ngit add. git commit -m \"Initial commit\"<\/code><\/pre>\n<p>Crie um novo reposit\u00f3rio no GitHub e deixe-o vazio. O GitHub fornecer\u00e1 instru\u00e7\u00f5es para publicar seu reposit\u00f3rio, semelhante a<\/p>\n<pre><code>git remote add origin git@github.com:\/.git   \ngit push -u origin master            <\/code><\/pre>\n<p>Isso publicar\u00e1 seu m\u00f3dulo no GitHub. Sucesso! Agora vamos us\u00e1-lo.<\/p>\n<h2>Use seu m\u00f3dulo Deno<\/h2>\n<p>Escreva um novo arquivo <code>index.ts<\/code>e adicione isso nele:<\/p>\n<pre><code>import reverseWords from 'https:\/\/raw.githubusercontent.com\/startfunction\/reverse-words\/master\/mod.ts';\n\nconsole.log( reverseWords( 'This is fun') );<\/code><\/pre>\n<p>Isso carregar\u00e1 o m\u00f3dulo que voc\u00ea publicou na etapa anterior e o usar\u00e1 para reverter uma string e registrar seu resultado. Podemos executar isso com Deno:<\/p>\n<pre><code>deno run index.ts<\/code><\/pre>\n<p>ele ir\u00e1 exibir<\/p>\n<pre><code>fun is This<\/code><\/pre>\n<h2>Sua vez<\/h2>\n<p>No caso de m\u00f3dulos complexos com muitos m\u00f3dulos dependentes, voc\u00ea pode querer usar o <a href=\"https:\/\/deno.land\/manual\/tools\/bundler\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bundler<\/a> do Deno que compilar\u00e1 tudo em um \u00fanico m\u00f3dulo para facilitar a publica\u00e7\u00e3o. Voc\u00ea publicou um m\u00f3dulo Deno? Deixe-nos saber nos coment\u00e1rios! E leia nossos outros artigos sobre o Deno como <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/10-otimos-recursos-para-aprender-e-trabalhar-com-deno\/\" title=\"10 \u00f3timos recursos para aprender e trabalhar com o Deno\">10 \u00f3timos recursos para aprender e trabalhar com o Deno<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deno n\u00e3o depende de um servidor centralizado como o npm. Qualquer pessoa pode publicar um m\u00f3dulo em seu servidor. Aprenda a criar, publicar e usar um m\u00f3dulo Deno.<\/p>\n","protected":false},"author":1,"featured_media":158005,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[1057,898,753,722,785,846],"tags":[1170],"class_list":["post-232199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cms-9","category-codigo-2","category-codigo-aberto","category-desenvolvedor","category-software-livre","category-tutoriais","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232199"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/158005"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}