Repository navigation
Add NPM plugin - #422
Add NPM plugin#422alondahari wants to merge 8 commits into
Conversation
This is the initial commit to handle integration with NPM, with the official registry. After running the boiler plate I updated the relevant fields, just enough to do manual testing of the basic use case (npm install). Still left to do: - Parse existing .npmrc file - Define when auth is needed - testing <!-- ps-id: d44814af-d6d4-4fd8-8dc4-62ed0ac06602 -->
Add a list of commands that don't require authentication. When running those commands with the cli, the plugin will not try to fetch the token from the vault. I opted for a negative list of commands over a positive one since the latter would end up being much longer, would need to be more complete, and would probably need more updates with time, with newer npm versions. <!-- ps-id: ec70313e-76dd-4aab-811d-196348b499ac -->
Update the access_token specfication to find the relevant .npmrc config file and create the 1password secret from it when initializing the plugin. <!-- ps-id: e7ddf1fc-f911-475f-9b2c-5b43edd41471 -->
The .npmrc can live in the project root, as well as the home directory. Decided to only support the per-project and per-user config files, since the global and the builtin configs should not contain the auth config probably. Reference: https://docs.npmjs.com/cli/v10/configuring-npm/npmrc#global-config-file <!-- ps-id: 362d7c8f-e1ad-4533-882f-e103b3d75caf -->
NPM packages can live in different registries, not just the official one. This commit adds support for them by setting the env var according to the right backend. To support that, I had to use a temp file and not the env var provisioner, since the key name would be different per registry. I also added support for different scopes along the way. I decided to separate the credentials instead of having a single line ithe 1password vault, to allow users to configure their secrets more easily. <!-- ps-id: 7ec3e696-9c29-4354-bba5-ae4206bc871f -->
Let's support best practice by defaulting to the official npm registry if the secret doesn't contain a host.
This will be useful when testing the access token
Add some tests around importing and provisioning the credentials.
|
@mrjones2014 @RyanPrussin What else is needed to get this merged? I'd really like to avoid my |
|
Commits need to be signed and PR approved by 2 Go developers. I only really maintain the Nix stuff for the project and don't have any experience with Go or how the actual Go project is built. |
|
Is there any chance of getting some traction on landing this? Providing a way to not have npm credentials sitting around on disk is incredibly valuable. |
|
If you're new to commit signing, there are different ways to set it up: Sign commits with
|
Overview
This is a second attempt at creating an NPM plugin, following #168.
Currently, this plugin supports:
It does not yet support:
Type of change
How To Test
npm loginto generate an.npmrcfile if you don't have an existing one.npmrcfile from your home foldernpm whoamiChangelog
Authenticate the NPM CLI using Touch ID and other unlock options with 1Password Shell Plugins.