@lomray/rollup-plugin-generate-package-json-v2

Generate package.json file with packages from your bundle using Rollup

Usage no npm install needed!

<script type="module">
  import lomrayRollupPluginGeneratePackageJsonV2 from 'https://cdn.skypack.dev/@lomray/rollup-plugin-generate-package-json-v2';
</script>

README

rollup-plugin-generate-package-json

Build Status Codecov

Generate package.json file with packages from your bundle using Rollup.

V2 Fork allow exclude packages from dependencies section.

About

This plugin is useful when you have a lot of packages in your current package.json file and want to create a lean one with only packages from your generated bundle, probably for deployment.

Installation

# yarn
yarn add rollup-plugin-generate-package-json -D

# npm
npm install rollup-plugin-generate-package-json -D

Usage

// rollup.config.js
import generatePackageJson from 'rollup-plugin-generate-package-json'

export default {
  input: 'src/index.js',
  output: {
    file: 'dist/app.js',
    format: 'cjs'
  },
  plugins: [
    generatePackageJson()
  ]
}

Configuration

There are some useful options, all of them are optional:

excludeDependencies

Type: array
Default: []

Exclude packages from dependencies section.

generatePackageJson({
    excludeDependencies: ['package-name']
})

inputFolder

Type: string
Default: current working directory

Set input package.json folder.

generatePackageJson({
  inputFolder: 'nested/folder'
})

outputFolder

Type: string
Default: bundle output folder

Set output folder for generated package.json file.

generatePackageJson({
  outputFolder: 'dist'
})

baseContents

Type: object | function
Default: {}

Set base contents for your generated package.json file.

generatePackageJson({
  baseContents: {
    scripts: {
      start: 'node app.js'
    },
    dependencies: {},
    private: true
  }
})

It can also be a function, which receives the contents of the input package.json file.

generatePackageJson({
  baseContents: (pkg) => ({
    name: pkg.name,
    main: pkg.main.replace('src', 'dist'),
    dependencies: {},
    private: true
  })
})

additionalDependencies

Type: Array | object
Default: []

Set dependencies which are not directly imported in the bundle, but are used by the app.

generatePackageJson({
  additionalDependencies: ['pg']
})

It's also possible to add new dependencies or overwrite dependency version.

generatePackageJson({
  additionalDependencies: {
    pg: '7.12.1',
    'react-calendar': 'file:../react-calendar/react-calendar-v2.13.2.tgz'
  }
})

License

MIT