npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

react-native-simplelink

v0.0.2

Published

Como criar uma biblioteca para React Native e Expo e publicar no npm

Downloads

8

Readme

Como criar bibliotecas para React Native e Expo e publicar no npm e yarn

Neste tutorial vamos explicar como criar uma biblioteca para React Native e Expo, e como publicar ela no npm. Para exemplo, vamos criar uma biblioteca para facilitar a criação de links.

Crie um repositório no GitHub

O primeiro passo é criar um repositório no GitHub e clonar ele em alguma pasta no seu computador. Isso pode ser feito tanto via terminal ou pelo aplicativo GitHub desktop. Selecione a opção de inicializar com o README.

Após criado o repositório, envie o primeiro commit para se certificar se tudo foi criado corretamente.

Criando o pacote npm

Acesse a pasta do repositório criado anteriormente via terminal, e execute os comandos abaixo:

Informe o autor do projeto:

$ npm set init.author.name “Seu nome”

Informe o e-mail:

$ npm set init.author.email “Seu e-mail”

Informe a licença:

$ npm set init.license “MIT”

Para esse exemplo, vamos utilizar a licença MIT.

Agora vamos associar esse projeto com o seu usuário no npm, para isso é preciso ter uma conta cadastrada em http://npmjs.com. Caso ainda não possua cadastro, faça o cadastro antes de continuar.

$ npm adduser

Quando solicitado informe seu nome de usuário, senha e e-mail.

Para criar o package.json execute o comando:

$ npm init

Quando solicitado informe, nome do pacote, a versão, uma descrição, para Entry point informe src/index.js, para Test Command deixe em branco, informe o repositório criado do GitHub, em Keywords informe tags de busca para o seu pacote, e por último informe a licença MIT. Se tudo estiver correto, informe yes.

O arquivo package.json vai ser criado na pasta do repositório, para esse exemplo o resultado ficou:

{
  "name": "react-native-simplelink",
  "version": "0.0.1",
  "description": "Como criar uma biblioteca para React Native e Expo e publicar no npm",
  "main": "src/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/athzuma/Criando-bibliotecas-React-Native.git"
  },
  "keywords": [
    "Criar",
    "biblioteca",
    "react",
    "native",
    "expo",
    "npm",
    "simple",
    "link"
  ],
  "author": "Athila Zuma <[email protected]>",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/athzuma/Criando-bibliotecas-React-Native/issues"
  },
  "homepage": "https://github.com/athzuma/Criando-bibliotecas-React-Native#readme"
}

Caso tenha digitado alguma informação errada, é só alterar direto nesse arquivo.

Crie seu componente React Native

Para esse exemplo vamos criar uma biblioteca para auxiliar na criação de links de forma mais rápida no React Native. Dentro da pasta do repositório criaremos a pasta src, e dentro dela os arquivos index.js e simplelink.js.

simplelink.js:

import React from 'react';
import { StyleSheet, TouchableOpacity, Linking, Text } from 'react-native';

export default class SimpleLink extends React.Component {
  constructor(props){
    super(props);
  }

  open() {
    if (this.props.link == "" || this.props.link == undefined) {
      Linking.openURL(this.props.children);
    } else {
      Linking.openURL(this.props.link);
    }
    if (this.props.onPress !== undefined) {
      this.props.onPress();
    }
  }

  render() {
    const { onPress = null , children, style = {}, link = "", decorationNone = false } = this.props;
    return (
      <TouchableOpacity onPress={() => { this.open() }}>
        <Text
          style={
            [
              style,
              decorationNone ? {} : styles.link
            ]
          }
        >
          {children}
        </Text>
      </TouchableOpacity>
    );
  }
}

const styles = StyleSheet.create({
  link: {
    color: 'blue',
    textDecorationLine: 'underline'
  },
});

Aqui você pode criar seu componente da forma que preferir.

index.js:

export SimpleLink from './simplelink';

Publicando sua biblioteca

Faça um git commit e envie as modificações realizadas para o GitHub. Depois execute o comando abaixo para publicar a biblioteca no npm:

$ npm publish

Se tudo ocorreu corretamente, agora a sua biblioteca está publicada e disponível para todos!

O último passo é editar o arquivo README.md com a documentação de como instalar e utilizar a biblioteca criada. Abaixo está a documentação criada para a biblioteca desse exemplo.

Como instalar a biblioteca no seu projeto

$ npm i react-native-simplelink

ou

$ yarn add react-native-simplelink

Como usar

Importe a biblioteca no seu projeto

import { SimpleLink } from 'react-native-simplelink';

Criando um link para uma página web de forma simples e rápida

<SimpleLink>http://google.com</SimpleLink>

Criar um link para um endereço diferente do texto de exibição

<SimpleLink link="http://github.com">GitHub</SimpleLink>

Criar um link sem formatação

<SimpleLink decorationNone>http://google.com</SimpleLink>

Adicionar formatação adicional

<SimpleLink style={{ marginVertical: 20 }}>http://google.com</SimpleLink>

Executar uma função quando o link for clicado

<SimpleLink onPress={() => { console.log('Acessando o google') }}>http://google.com</SimpleLink>

Abrir o link por uma função

this.link.open();

//…

<SimpleLink
  ref={link => {this.link = link}}
>
  https://google.com
</SimpleLink>

Exemplo completo

import React from 'react';
import { StyleSheet, View } from 'react-native';

import { SimpleLink } from 'react-native-simplelink';

export default class App extends React.Component {
  constructor(props){
    super(props);
  }

  componentDidMount() {
    //Abrir um link
    this.link.open();
  }

  render() {
    return (
      <View style={styles.container}>

        <SimpleLink>http://google.com</SimpleLink>
        <SimpleLink link="http://github.com">GitHub</SimpleLink>
        <SimpleLink decorationNone>http://google.com</SimpleLink>
        <SimpleLink style={{ marginVertical: 20 }}>http://google.com</SimpleLink>
        <SimpleLink onPress={() => { console.log('Acessando o google') }}>http://google.com</SimpleLink>

        <SimpleLink
          ref={link => {this.link = link}}
        >
          https://google.com
        </SimpleLink>

      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  }
});