pywebpack 2.2.1
Webpack integration layer for Python.
License: BSD
Requires Python: >=3.7
Keywords: webpack npm node

===========
 PyWebpack
===========

.. image:: https://github.com/inveniosoftware/pywebpack/workflows/CI/badge.svg
        :target: https://github.com/inveniosoftware/pywebpack/actions?query=workflow%3ACI

.. image:: https://img.shields.io/coveralls/inveniosoftware/pywebpack.svg
        :target: https://coveralls.io/r/inveniosoftware/pywebpack

.. image:: https://img.shields.io/github/tag/inveniosoftware/pywebpack.svg
        :target: https://github.com/inveniosoftware/pywebpack/releases

.. image:: https://img.shields.io/pypi/dm/pywebpack.svg
        :target: https://pypi.python.org/pypi/pywebpack

.. image:: https://img.shields.io/github/license/inveniosoftware/pywebpack.svg
        :target: https://github.com/inveniosoftware/pywebpack/blob/master/LICENSE

Webpack integration layer for Python.

**Using Flask?** Check out
`Flask-WebpackExt <https://flask-webpackext.readthedocs.io>`_.

PyWebpack makes it easy to interface with your existing Webpack project and
does not try to manage Webpack for you. PyWebpack does this via:

* **Manifests**: You tell Webpack to write a ``manifest.json`` using plugins
  such as `webpack-manifest-plugin
  <https://www.npmjs.com/package/webpack-manifest-plugin>`_,
  `webpack-yam-plugin
  <https://www.npmjs.com/package/webpack-yam-plugin>`_ or
  `webpack-bundle-tracker
  <https://www.npmjs.com/package/webpack-bundle-tracker>`_. PyWebpack
  reads the manifest and makes your compiled assets available to your template
  engine such as Jinja.
* **API for NPM**: PyWebpack provides an API so that e.g. ``project.install()``
  will run ``npm install`` in your Webpack project.

Optionally you can use PyWebpack to also:

* **Inject configuration:** PyWebpack will write a ``config.json`` into
  your webpack project, which you can import in your webpack configuration. You
  can define what goes in the config e.g. let webpack know about output paths or
  dynamic entry points.
* **Collect bundles:** If your Webpack project is spread over multiple Python
  packages, PyWebpack can help you dynamically assemble the files into a
  Webpack project. This is useful if you don't know until build time which
  packages are installed.

Further documentation is available on
https://pywebpack.readthedocs.io/

Changes
=======

Version 2.2.1 (released 2025-12-03)

- project: allow for `LocalProxy` in `copy` `to` and `from` fields

Version v2.2.0 (released 2025-07-14)

- chores: replaced importlib_metadata with importlib

Version 2.1.0 (released 2024-11-26)

- Add a copy func to copy assets from a directly to another. It validates the from/to
  path to sandbox the copy locations.

Version 2.0.1 (released 2024-09-20)

- Removes implicit dependency on setuptools and use importlib-metadata instead of the
  deprecated pkg_resources module

Version 2.0.0 (released 2024-03-04)

- Removes dependency on node-semver package
- Changes the NPM dependencies merging algorithm to fail when conflicting
  major versions of the same package are found.

Version 1.2.0 (released 2021-01-21)

- Fixes an issue where if you were using WebpackBundleProject with
  the LinkStorage to make symlinks, you would end up having your source
  package.json overwritten.

Version 1.1.0 (released 2020-05-25)

- Adds support for collecting aliases from bundles.
- Restore Python 2 compatibility.

Version 1.0.4 (released 2020-05-25)

- Python commands now fail when the NPM processes exit with an error.

Version 1.0.3 (released 2020-05-12)

- Fixes issue with incorrect parsing of webpack-bundle-tracker manifests.

Version 1.0.2 (released 2020-04-28)

- Adds a ``depth`` parameter to LinkStorage to allow for higher level
  symlinking on the folder-level.

Version 1.0.1 (released 2020-02-14)

- Adds support for having bundles that are callables in
  bundles_from_entry_point.

Version 1.0.0 (released 2018-10-29)

- Adds documentation and extra tests.

Version 0.1.2 (released 2017-11-06)

- Fix invalid closing of </link> tag.

Version 0.1.1 (released 2017-05-29)

- Fix problem with package.json not being updated.
- Fix merging of package.json dependencies.
- Increase test coverage.

Version 0.1.0 (released 2017-05-16)

- Initial public release.