Socket
Socket
Sign inDemoInstall

ipx

Package Overview
Dependencies
198
Maintainers
2
Versions
70
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    ipx


Version published
Weekly downloads
259K
increased by1.03%
Maintainers
2
Install size
102 MB
Created
Weekly downloads
 

Changelog

Source

0.4.5 (2020-11-30)

Bug Fixes

  • prevent unknow format error (#18) (3f338be)

Readme

Source
IPX Logo

Docker Pulls NPM Vernion NPM Downloads Package Size

High performance, secure and easy to use image proxy based on sharp and libvips.

  • Easy deployment
  • Configurable operations
  • Built-in secure cache with human readable entries and resistant against duplicates
  • Adapter based cache and input
  • Auto cache cleaner
  • Twelve factor friendly
  • Client SDK for URL generation

Usage

Using NPM package

You can use ipx command to start server using:

$ npx ipx

Docker Image

Latest docker image is automatically built under pooya/ipx.

Run a test server:

docker run \
  -it \
  --rm \
  --volume ./storage:/app/storage:ro \
  --volume ./cache:/app/cache \
  --port 3000:3000
  pooya/ipx

Using docker-compose:

version: '3'
services:
  ipx:
    image: pooya/ipx
    volumes:
      - ./storage:/app/storage:ro
      - ./cache:/app/cache
    ports:
      - 3000:3000

Programatic Usage

You can use IPX as a Connect/Express middleware or directly use IPX class.

import { IPX, IPXMiddleware } from 'ipx'

const ipx = new IPX(/* options */)

const app = express()
app.use('/image', IPXMiddleware(ipx))

API

/{format}/{operations}/{src}

Operations are separated by a colon , (Example: op1,op2) and their arguments separated using underscore _ (Example: s_200_300)

ََ‍‍Use _ value in place for {format} or {operations} to keep original values of source image.

Possible values for format: jpeg,webp or png.

Examples

Just change format to webp and keep other things same as source:

http://cdn.example.com/webp/_/avatars/buffalo.png

Keep original format (png) and set width to 200:

http://cdn.example.com/_/w_200/avatars/buffalo.png

Resize to 200x300px using embed method and change format to jpg:

http://cdn.example.com/jpg/s_200_300,embed/avatars/buffalo.png

Operations

OperationArgumentsExampleDescription
swidth, heights_200_300Resize image.
wwidthw_200Change image with.
hheighth_200Change image height.
embed-embedPreserving aspect ratio, resize the image to the maximum width or height specified then embed on a background of the exact width and height specified.
max-maxPreserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to the width and height specified.
min-minPreserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to the width and height specified.

Config

Config can be customized using IPX_* environment variables.

  • IPX_PORT (or PORT) Default: 3000

  • IPX_INPUT_ADAPTER

    • Default: fs
  • IPX_INPUT_DIR

    • Default: storage
  • IPX_CACHE_ADAPTER

    • Default: fs
  • IPX_CACHE_DIR

    • Default: cache
  • IPX_CACHE_CLEAN_CRON

    • Default: 0 0 3 * * * (every night at 3:00 AM)
  • IPX_CACHE_CLEAN_MINUTES

    • Default: 24 * 60 (24 hours)

Client

Import client:

import { img } from 'ipx/client'

const { img } = require('ipx/client')

img() is a factory function to configure base options:

// getImage: (path, opts?, format?) => URL
const getImage = img({
  baseURL = 'https://cdn.example.com',
  basePath = 'uploads',
  opts = [], // Default opts
  format = 'jpg',
  presets: {
    chrome400: {
      format: 'webp',
      opts: { s: ['400', '400']}
    }
  }
})

getImage('posts/ipx.png', { w: 200 }) // => https://cdn.example.com/jpg/w_200/uploads/posts/ipx.png

getImage.chrome400('posts/ipx.png') // => https://cdn.example.com/webp/s_400_400/uploads/posts/ipx.png

License

MIT - Pooya Parsa

FAQs

Last updated on 30 Nov 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc