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 🙏

© 2024 – Pkg Stats / Ryan Hefner

wrapper-path

v2.1.4

Published

wrapper to path module, to simple require, get and others

Downloads

600

Readme

Build Status Maintainability Test Coverage npm npm version dependency status devDependency status

¿Que hace?

Este proyecto nace de la necesidad de poder hacer un "require" con una "ruta" mas comprensible.

Es un paquete, para poder realizar require de manera más práctica, sin tener que agregar . o ../ a las rutas de los módulos o paquetes que se desean incluir y que pueda hacer desde cualquier lugar del proyecto de la misma manera.

Tomando una ruta base '/' como se hace en los sistemas operativos. Esta puede ser la ruta al directorio del proyecto o a cualquier otro punto dentro del sistema desde donde se desee.

Uso

Instalación

Instalar utilizando npm:

yarn add wrapper-path
# npm i --save wrapper-path

Configuración

Pensemos en la siguiente estructura de archivos:

/home
    /personal
        /proyecto
            app.js
            /carpeta1
                index.js
                module1.js
                /modulo2
                    index.js
                    script.js
            /carpeta2
                script.js

Path

constructor

Este método es el que se llama cuando se realiza el siguiente código:

const Path = require('wrapper-path');
let path = new Path(param);

Argumentos:

  • param (String) required: ruta que queremos tener como base de nuestro proyecto

Retorna:

(Path): Retorna la instancia de la clase Path

get

Este método permite obtener la ruta completa a el archivo o directorio que solicitemos por parámetro.

const Path = require('wrapper-path');
let path = new Path('/home/personal/proyecto');

path.get('/app.js'); // /home/personal/proyecto/app.js

Argumentos:

  • param (String) required: ruta que queremos obtener.

Retorna:

(String): retorna la ruta completa.

require

Este método permite hacer el require como si fuera nativo pero tomando la ruta base con la cual se instancia nuestro objeto path.

const Path = require('wrapper-path');
let path = new Path('/home/personal/proyecto');
let app = path.require('/app.js');
let carpeta1 = path.require('/carpeta1');

Argumentos:

  • param (String) required: ruta que queremos cargar.

Retorna:

(File/Folder): retorna la carga del archivo o carpeta.

recursive(files,folders)

Esta funcionalidad recursive, es para obtener un listado recursivamente de todos los archivos o carpetas de un directorio en especifico.

const Path = require('wrapper-path');
let path = new Path('/home/personal/proyecto');
let files = path.recursive.files(param, opts);
let folders = path.recursive.folders(param, opts);

Argumentos:

  • param (String) required: ruta de la carpeta que queremos obtener los archivos o carpetas.
  • opts (Object):
    • match (RegExp): expresión regular para determinar que rutas conservar
    • exclude (RegExp): expresión regular para determinar que rutas excluir del resultado
    • maxDepth (Number): profundidad con la que se desea obtener el listado de archivos

NOTA: tener en consideracion el uso de la bandera de busqueda g en las RegExp, ya que a puede entregar resultados erroneos, mas información aquí

Retorna:

(Array): retorna un arreglo de con las rutas de los archivos o carpetas.

remove(file,files,folder,folders)

Esta funcionalidad remove, es para borrar un archivo, archivos de una carpeta, una carpeta, o las carpetas de una carpeta.

const Path = require('wrapper-path');
let path = new Path('/home/personal/proyecto');
path.remove.file(param);
path.remove.files(param, opts);
path.remove.folder(param);
path.remove.folders(param, opts);

Argumentos:

  • param (String) required: ruta de la carpeta o archivo que queremos eliminar.
  • opts (Object):
    • match (RegExp): expresión regular para determinar que rutas conservar
    • exclude (RegExp): expresión regular para determinar que rutas excluir del resultado

Retorna:

(Array): retorna un arreglo de con las rutas de los archivos o carpetas.

Pruebas funcionales (Unit Testing)

Se llevaron a cabo 12 pruebas funcionales las cuales evalúan todos los casos de éxito y fallo de cada una de las funcionalidades antes nombradas, para ver el resultado:

$ yarn test-spec
# yarn test

Pruebas de rendimiento (benchmark)

Con el objetivo de que sea optimo el código se realizaron 2 pruebas de rendimiento, de las cuales se determino que:

  • utilizar *startsWith es mucho mas optimo que hacer un RegExp, cuando uno quiere validar si una cadena contiene un texto al inicio. Para correr la prueba:

    $ yarn benchmark benchmarck/regex-startsWith.js
  • Utilizar slice o substr es muy similar en rendimiento. Para correr la prueba:

    $ yarn benchmark benchmarck/slice-substr.js

Changelog

Todos los cambios importantes son escritos aquí.