NPMTabCompletion.psm1
Import-Module TabExpansionPlusPlus function NPMCompletion { param($wordToComplete, $commandAst) Set-Alias -Name nct -Value New-CommandTree $commandTree = & { nct access 'Set access level on published packages' { nct public 'Set a package to be publicly accessible' nct restricted 'Set a package to be restricted' nct grant 'Grant the ability of users and teams to have read-only or read-write access to a package' { nct 'read-only' 'tt' nct 'read-write' 'tt' nct 'scope:' 'tt' } nct revoke "Revoke the ability of users and teams" { nct "scope:team" "the team" } nct ls-packages "Show all of the packages a user or a team is able to access, along with the access level, except for read-only public packages" nct ls-collaborators "Show all of the access privileges for a package. Will only show permissions for packages to which you have at least read access" nct edit 'Set the access privileges for a package at once using $EDITOR' } nct adduser 'Add a registry user account' {} nct bin 'Display npm bin folder' {} nct bugs 'Bugs for a package in a web browser maybe' {} nct build 'Build a package' {} nct cache 'Manipulates packages cache' {} nct config 'Manage the npm configuration files' {} nct dedupe 'Reduce duplication' {} nct deprecate 'Deprecate a version of a package' {} nct dist-tag 'Modify package distribution tags' {} nct docs 'Docs for a package in a web browser maybe' {} nct edit 'Edit an installed package' {} nct explore 'Browse an installed package' {} nct help 'Get help on npm' {} nct help-search 'Search npm help documentation' {} nct init 'Interactively create a package.json file' {} nct link 'Symlink a package folder' {} nct logout 'Log out of the registry' {} nct ls 'List installed packages' {} nct npm 'javascript package manager' {} nct outdated 'Check for outdated packages' {} nct owner 'Manage package owners' {} nct pack 'Create a tarball from a package' {} nct ping 'Ping npm registry' {} nct prefix 'Display prefix' {} nct prune 'Remove extraneous packages' {} nct publish 'Publish a package' {} nct rebuild 'Rebuild a package' {} nct repo 'Open package repository page in the browser' {} nct restart 'Restart a package' {} nct root 'Display npm root' {} nct search 'Search for packages' {} nct shrinkwrap 'Lock down dependency versions' {} nct star 'Mark your favorite packages' {} nct stars 'View packages marked as favorites' {} nct start 'Start a package' {} nct stop 'Stop a package' {} nct tag 'Tag a published version' {} nct team 'Manage organization teams and team memberships' {} nct test 'Test a package' {} nct uninstall 'Remove a package' {} nct unpublish 'Remove a package from the registry' {} nct update 'Update a package' {} nct version 'Bump a package version' {} nct view 'View registry info' {} nct whoami 'Display npm username' {} nct install 'install in package directory' { nct -Argument "--save" "Package will appear in your dependencies" nct -Argument "--save-dev" "Package will appear in your devDependencies" nct -Argument "--save-optional" "Package will appear in your optionalDependencies" } nct run 'Run arbitrary package scripts' { nct { param($wordToComplete, $commandAst) $scripts = (Get-Content .\package.json | ConvertFrom-Json).scripts $scripts | Get-Member -MemberType NoteProperty | ForEach { $target = $scripts.($_.Name) New-CompletionResult $_.Name "$($target)" } } } } Get-CommandTreeCompletion $wordToComplete $commandAst $commandTree } NPMCompletion Register-ArgumentCompleter -Command 'npm' -Native -ScriptBlock $function:NPMCompletion -Description 'Complete parameters and arguments to npm.cmd' |