First, create a nuget runner, passing in the desired default options. The ones below apply to all or most commands, however any command option can be specified. For example you can specify noCache: true to ensure all commands that support that option do not use the cache.
var Nuget =require('nuget-runner');
// Create the nuget instance passing in default options.
var nuget =Nuget({
// Optional path to the nuget executable. If omitted
// nuget.exe must be in the PATH.
nugetPath:'path/to/nuget.exe',
// The API key.
apiKey:'78a53314-c2c0-45c6-9d92-795b2096ae6c',
// Display this amount of details in the output.
verbosity:'normal|quiet|detailed',
// The NuGet configuation file. If not specified, file
// %AppData%\NuGet\NuGet.config is used as configuration file.
configFile:'path/to/nuget.config'
});
These defaults can be selectively overridden in the individual command options.
var nuget =Nuget({ verbosity:'quiet'});
nuget.push(...,{ verbosity:'detailed'})
All commands return a promise. Success returns stdout:
nuget.push(...)
.done(function(stdout){
console.log(stdout);
});
Failure returns the error:
nuget.push(...)
.fail(function(error){
console.log(error.message);
});
The following are the supported commands and options.
Add
(nuget.exe v3.3 and above) Adds the provided package to your package source in a hierarchical layout in order to provide significant performance benefits. See here for more details.
nuget.add({
// Specifies the path to the package to be added and the package source,
// which is a folder or UNC share, to which the nupkg will be added. Http
// sources are not supported.
nupkg:'path/to/file.nupkg',
// Specifies the folderBasedPackageSource to which the nupkg will be
// added. Http sources are not supported.
source:'\\\\server\\path',
// If provided, all the files in the package are added to your package
// source.
expand:true,
verbosity:'normal|quiet|detailed'
});
Config
Sets NuGet config values. See here for more details.
nuget.config({
name1:'value1',
name2:'value2'
},
// Options
{
verbosity:'normal|quiet|detailed',
configFile:'path/to/nuget.config'
});
Delete
Deletes a package from the server. See here for more details.
nuget.delete(
// Id of the package.
'PackageId',
// Version of the package.
'1.0',
// Options
{
// Specifies the server URL.
source:'http://mynugetserver.org',
apiKey:'78a53314-c2c0-45c6-9d92-795b2096ae6c',
verbosity:'normal|quiet|detailed',
configFile:'path/to/nuget.config'
});
Install
Installs a package using the specified sources. If no sources are specified, all sources defined in %AppData%\NuGet\NuGet.config are used. If NuGet.config specifies no sources, uses the default NuGet feed. See here for more details.
nuget.install(
// Specify the package id. Or if a path to a packages.config file is
// used instead of an id, all the packages it contains are installed.
'PackageId|path/to/packages.config',
// Options
{
// A list of packages sources to use for the install.
// The version of the package to install. If not specified, latest
// version is mirrored.
version:'1.0.0.0',
// When set, "latest" when specifying no version for a package id (as command
// argument or in packages.config) includes pre-release packages.
preRelease:true,
// Specifies the timeout for pushing to a server in seconds. Defaults to
// 300 seconds (5 minutes).
timeout:600,
// By default a local cache is used as a fallback when a package or a
// package dependency is not found in the specified source(s). If you
// want to ensure only packages from the specified sources are used,
// set the NoCache option. If you want instead to maximize chances
// of finding packages, do not set this option.
noCache:true,
// Log what would be done without actually doing it. Assumes success
// for push operations.
noOp:true,
apiKey:'78a53314-c2c0-45c6-9d92-795b2096ae6c'
});
Pack
Creates a NuGet package based on the specified nuspec or project file. See here for more details.
nuget.pack({
// Specify the location of the nuspec or project file to create a package.
spec:'path/to/nuspec|path/to/project/file',
// Specifies the directory for the created NuGet package file.
// If not specified, uses the current directory.
outputDirectory:'path/of/output',
// The base path of the files defined in the nuspec file.
basePath:'source/path',
// Shows verbose output for package building.
verbose:true,
// Overrides the version number from the nuspec file.
version:'1.0.0.0',
// Specifies one or more wildcard patterns to exclude when creating a package.
exclude:['**\\*.log','**\\.DS_Store'],
// Determines if a package containing sources and symbols should be created.
// When specified with a nuspec, creates a regular NuGet package file and
// the corresponding symbols package.
symbols:true,
// Determines if the output files of the project should be in the tool folder.
tool:true,
// Determines if the project should be built before building the package.
build:true,
// Prevent default exclusion of NuGet package files and files and folders
// starting with a dot e.g. .svn.
noDefaultExcludes:true,
// Specify if the command should not run package analysis after building
// the package.
noPackageAnalysis:true,
// Include referenced projects either as dependencies or as part of the package.
// If a referenced project has a corresponding nuspec file that has the same name
// as the project, then that referenced project is added as a dependency. Otherwise,
// the referenced project is added as part of the package.
includeReferencedProjects:true,
// Prevent inclusion of empty directories when building the package.
excludeEmptyDirectories:true,
// Provides the ability to specify properties when creating a package.
properties:{
name1:'value1',
name2:'value2'
},
// Set the minClientVersion attribute for the created package. This value will
// override the value of the existing minClientVersion attribute (if any) in
// the .nuspec file.
minClientVersion:'2.5',
verbosity:'normal|quiet|detailed'
});
Push
Pushes a package to the server and publishes it. NuGet's default configuration is obtained by loading %AppData%\NuGet\NuGet.config, then loading any nuget.config or .nuget\nuget.config starting from root of drive and ending in current directory. See here for more details.
nuget.push(
// Specify the path to the package.
'path/to/package/file',
// Options
{
// Specifies the server URL. If not specified, nuget.org is used unless
// `DefaultPushSource` config value is set in the NuGet config file. Starting
// with NuGet 2.5, if NuGet.exe identifies a UNC/folder source, it will
// perform the file copy to the source.
source:'\\\\mycompany\\repo',
// Specifies the timeout for pushing to a server in seconds. Defaults to
// 300 seconds (5 minutes).
timeout:600,
apiKey:'78a53314-c2c0-45c6-9d92-795b2096ae6c',
verbosity:'normal|quiet|detailed',
configFile:'path/to/nuget.config'
});
Restore
Downloads and unzips (restores) any packages missing from the packages folder. See here for more details.
nuget.restore({
// Specify the solution path or path to a packages.config file.
// Disable using the machine cache as the first package source.
noCache:true,
// Checks if package restore consent is granted before restoring a package.
requireConsent:true,
// Specifies the packages directory.
packagesDirectory:'path/to/solution/directory',
// Specifies the solution directory. Not valid when restoring packages
// for a solution.
solutionDirectory:'path/to/solution/directory',
// Disable parallel nuget package restores.
disableParallelProcessing:true,
verbosity:'normal|quiet|detailed',
configFile:'path/to/nuget.config'
});
Set API Key
Saves an API key for a given server URL. When no URL is provided API key is saved for the NuGet gallery. See here for more details.
nuget.setApiKey(
// Specify the API key to save.
'78a53314-c2c0-45c6-9d92-795b2096ae6c',
// Options
{
// Server URL where the API key is valid.
source:'http://mynugetserver.org',
verbosity:'normal|quiet|detailed',
configFile:'path/to/nuget.config'
});
Sources
Provides the ability to manage list of sources located in %AppData%\NuGet\NuGet.config. See here for more details.
nuget.sources(
// Name of the source.
'Source name',
// Action to perform on the source.
'Add|Remove|Enable|Disable|Update',
// Options
{
// Path to the package(s) source.
source:'path/to/sources',
// UserName to be used when connecting to an authenticated source.
username:'username',
// Password to be used when connecting to an authenticated source.
password:'p@$$w0rd',
// Do not encrypt the password and store it in clear text.
storePasswordInClearText:true,
verbosity:'normal|quiet|detailed',
configFile:'path/to/nuget.config'
});
Spec
Generates a nuspec for a new package. If this command is run in the same folder as a project file (.csproj, .vbproj, .fsproj), it will create a tokenized nuspec file. See here for more details.
nuget.spec({
// Id of the package.
packageId:'MyPackage',
// Assembly to use for metadata.
assemblyPath:'MyAssembly.dll',
// Overwrite nuspec file if it exists.
force:true,
verbosity:'normal|quiet|detailed',
configFile:'path/to/nuget.config'
});
Update
Update packages to latest available versions. This command also updates NuGet.exe itself. Please note that the presence of Packages folder is required to run the Update command. A recommended way is to run NuGet.exe Restore command first before running the Update command. See here for more details.
nuget.update({
// Specify the solution path or path to a packages.config file.