0.2.74 • Published 12 months ago

@rushstack/webpack-embedded-dependencies-plugin v0.2.74

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

webpack-embedded-dependencies-plugin

Installation

npm install @rushstack/webpack-embedded-dependencies-plugin --save

Overview

A webpack plugin for generating a list of embedded dependencies. Embedded dependencies are third-party packages which are being bundled into your released code and are oftentimes subject to license, security, and other legal requirements. This plugin aims to make it easier to generate a list of embedded dependencies and their associated metadata, so they can be analyzed by additional tools.

The plugin also includes the ability to generate a secondary asset which contains the license text for each embedded dependency into a single file called THIRD-PARTY-NOTICES.html. This is a common legal requirement when deploying services or products containing open-source code.

Plugin

// webpack.config.js
import EmbeddedDependenciesWebpackPlugin from '@rushstack/webpack-embedded-dependencies-plugin';

export default () => {
  /*...*/
  plugins: [
    new EmbeddedDependenciesWebpackPlugin( /* options */ )
  ]
}

Options

outputFileName: string

Name of the file to be generated. Defaults to embedded-dependencies.json

new EmbeddedDependenciesWebpackPlugin({
  outputFileName: 'my-custom-file-name.json'
})

generateLicenseFile: boolean

Whether to generate a license file. Defaults to false and will only generate the embedded-dependencies.json file

new EmbeddedDependenciesWebpackPlugin({
  generateLicenseFile: true
})

generateLicenseFileFunction: LicenseFileGeneratorFunction

Function that generates the license file. Defaults to the plugin's internal default generator function but allows you to override it.

new EmbeddedDependenciesWebpackPlugin({
  generateLicenseFile: true,
  generateLicenseFileFunction: (packages: IPackageData[]): string => {
    return packages
      .map((pkg) => {
        return `<h2>${pkg.name}</h2><p>${pkg.license}</p>`;
      }).join('');
  }
})

generatedLicenseFilename: LicenseFileName

new EmbeddedDependenciesWebpackPlugin({
  generateLicenseFile: true,
  generatedLicenseFilename: 'custom-license-file-name.html'
})

Name of the generated license file. Defaults to THIRD-PARTY-NOTICES.html but can be customized to any name you want.

packageFilterPredicate: (packageJson: IPackageData, filePath: string) => boolean

Function that allows you to filter out packages that you don't want to include in any generated files.

new EmbeddedDependenciesWebpackPlugin({
  packageFilterPredicate: (packageJson: IPackageData, filePath: string): boolean => {
    return packageJson.name !== 'my-package-to-exclude';
  }
})

Types

LicenseFileGeneratorFunction

export declare type LicenseFileGeneratorFunction = (packages: IPackageData[]) => string;

Function type that generates the license file.

const licenseFileGenerator: LicenseFileGeneratorFunction = (packages: IPackageData[]): string => {
  return packages
    .map((pkg) => {
      return `<h2>${pkg.name}</h2><p>${pkg.license}</p>`;
    }).join('');
}

LicenseFileName

export declare type LicenseFileName = `${string}.${'html' | 'md' | 'txt'}`;

Loose string type that represents the name of the generated license file. The string must have at least one character and must end with one of the following file extensions: html, md, or txt or else you'll receive a TypeScript error.

const licenseFileName: LicenseFileName = 'custom-license-file-name.html';
const licenseMarkdownFileName: LicenseFileName = 'custom-license-file-name.md';
const licenseTextFileName: LicenseFileName = 'custom-license-file-name.txt';

Links

@rushstack/webpack-embedded-dependencies-plugin is part of the Rush Stack family of projects.

0.2.74

12 months ago

0.2.73

1 year ago

0.2.72

1 year ago

0.2.71

1 year ago

0.2.70

1 year ago

0.2.69

1 year ago

0.2.68

1 year ago

0.2.67

1 year ago

0.2.66

1 year ago

0.2.63

1 year ago

0.2.62

1 year ago

0.2.61

1 year ago

0.2.60

1 year ago

0.2.65

1 year ago

0.2.64

1 year ago

0.2.52

1 year ago

0.2.51

1 year ago

0.2.50

1 year ago

0.2.59

1 year ago

0.2.58

1 year ago

0.2.57

1 year ago

0.2.56

1 year ago

0.2.55

1 year ago

0.2.54

1 year ago

0.2.53

1 year ago

0.2.49

1 year ago

0.2.48

1 year ago

0.2.47

1 year ago

0.2.46

1 year ago

0.2.45

1 year ago

0.2.44

1 year ago

0.2.43

1 year ago

0.2.42

1 year ago

0.2.41

2 years ago

0.2.40

2 years ago

0.2.39

2 years ago

0.2.38

2 years ago

0.2.37

2 years ago

0.2.36

2 years ago

0.2.35

2 years ago

0.2.34

2 years ago

0.2.33

2 years ago

0.2.32

2 years ago

0.2.31

2 years ago

0.2.30

2 years ago

0.2.29

2 years ago

0.2.28

2 years ago

0.2.26

2 years ago

0.2.25

2 years ago

0.2.24

2 years ago

0.2.23

2 years ago

0.2.22

2 years ago

0.2.21

2 years ago

0.2.20

2 years ago

0.2.19

2 years ago

0.2.18

2 years ago

0.2.17

2 years ago

0.2.16

2 years ago

0.2.15

2 years ago

0.2.14

2 years ago

0.2.13

2 years ago

0.2.12

2 years ago

0.2.11

2 years ago

0.2.10

2 years ago

0.1.30

2 years ago

0.1.31

2 years ago

0.1.32

2 years ago

0.1.33

2 years ago

0.1.34

2 years ago

0.1.35

2 years ago

0.1.36

2 years ago

0.1.37

2 years ago

0.1.27

2 years ago

0.1.28

2 years ago

0.1.29

2 years ago

0.1.26

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.1.10

2 years ago

0.1.11

2 years ago

0.1.12

2 years ago

0.1.13

2 years ago

0.1.14

2 years ago

0.1.15

2 years ago

0.1.20

2 years ago

0.1.21

2 years ago

0.1.22

2 years ago

0.1.23

2 years ago

0.1.24

2 years ago

0.1.25

2 years ago

0.1.16

2 years ago

0.1.8

2 years ago

0.1.17

2 years ago

0.1.7

2 years ago

0.1.18

2 years ago

0.1.19

2 years ago

0.1.9

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago