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

eyes-sourcemap-webpack

v1.0.3

Published

A webpack plugin for uploading source maps to monitoring services. Simplify source map management and error tracking in production builds.

Downloads

166

Readme

📋 Introduction

eyes-sourcemap-webpack is a powerful webpack plugin that automatically uploads source maps at build time, enabling efficient debugging and error tracking. It executes after the build process, before the final output of the dist folder.

⚠️ Important Notes

Source maps must be enabled in your webpack build, or the plugin won't function. You need to provide a server-side API to receive uploaded source maps. This plugin is specifically designed for webpack projects.

🚀 Installation

Install the plugin via npm:

npm install eyes-sourcemap-webpack --save-dev

⚙️ Configuration

Below is an example of how to configure the plugin in your vue.config.js:

// vue.config.js
const EyesSourceMap = require('eyes-sourcemap-webpack');

module.exports = defineConfig({
  productionSourceMap: true,
  configureWebpack: {
    plugins: [
      new EyesSourceMap({
        dsn: 'http://your-upload-url', // Required: API base URL for uploads
        token: 'your-project-token',   // Required: Unique project identifier
        uploadScript: ['vue-cli-service build --mode staging'], // Optional: Commands triggering upload
        productionSourceMap: true,     // Optional: Retain source maps (default: false)
        concurrency: 6,                 // Optional: Max upload concurrency (default: 5)
        api: '/api/upload/sourcemap',   // Optional: API endpoint for uploads (default: /api/upload/sourcemap)
        logger: true                   // Optional: Enable logging (default: true)
      })
    ]
  }
})

example with nestJS server:

@Post('sourcemap')
@UseInterceptors(FileInterceptor('file'))
async uploadSourceMap(
  @UploadedFile() file: Express.Multer.File, 
  @Body('apiKey') apiKey: string
) {
  if (!file || !apiKey) {
    throw new CustomHttpException('upload fail', ERROR_CODES.INVALID_PARAMETER);
  }
  return this.uploadService.handleUploadedFile(file, apiKey);
}

async handleUploadedFile(file: Express.Multer.File, apiKey: string) {
  try {
    const filePath = path.join(this.uploadPath, apiKey);

    if (!fs.existsSync(filePath)) {
      fs.mkdirSync(filePath, { recursive: true });
    }

    const fileUrl = path.join(filePath, file.originalname)
    fs.writeFileSync(fileUrl, file.buffer);

    return { message: 'upload success', filename: file.filename };
  } catch (error) {
    throw new CustomHttpException('upload fail', ERROR_CODES.INVALID_PARAMETER);
  }
}
  

🎯 When to Use This Plugin?

Production Error Tracking: Upload source maps to your monitoring service for better stack traces in production. Efficient Debugging: Retain hidden source maps to debug production issues without exposing code to end-users.

📝 Changelog

v1.0.3

  • Added dependencies: axios and form-data for HTTP requests and form data handling.
  • Lowered Node.js version requirements to improve compatibility with older Node environments.
  • Enhanced upload logic: Improved stability for concurrent uploads.

v1.0.2

  • Initial release of the plugin.
  • Support for concurrent uploads: Allows customizable concurrency limits to improve upload efficiency.