How it works

Affected project files

LPM is acting in the background of your Automation Studio project. Upon initialization, two additional files get created at the root of your AS project: package.json and .npmrc. The .npmrc points the @loupeteam scope at the GitHub package registry so that npm can resolve Loupe packages from inside the project.

When you install your first package with LPM, a node_modules folder also gets created at the root of your project. It is recommended that you add this folder to your .gitignore file.

When executed within an Automation Studio project, LPM interacts with a specific library folder in the project: Logical / Libraries / Loupe. This folder is dynamically updated in order to reflect the list of libraries that have been required by the user (including implicit dependencies).

Under the hood

LPM is distributed as the @loupeteam/lpm npm package and installed globally with npm install -g @loupeteam/lpm. The package’s post-install step creates a Python virtual environment (.venv) inside the installed package directory and installs LPM’s Python runtime dependencies into it. The lpm command on your PATH is a thin Node.js shim that invokes the Python entry point inside that venv, so you need both Node.js and Python 3.8+ installed on your machine.

At runtime, LPM uses NPM to install Loupe libraries and their dependencies into the node_modules folder. It then synchronizes the contents of this folder with folders in the Logical View, and (when deployment targets are configured via lpm configure) deploys the relevant objects to the targeted configurations.

LPM stores the list of all required libraries in its package.json file, so inspecting this manually can be useful.