HTTP dependencies
Paket allows one to automatically manage the linking of files from HTTP resources into your projects.
Referencing a single file
You can reference a single file from an HTTP resource simply by specifying the
URL in the paket.dependencies file:
1:
|
|
If you run the paket install command, it will add a new
section to your paket.lock file:
1: 2: 3: |
|
If you want to reference the file in one of your project files then add an entry
to the project's paket.references file.:
1:
|
|
This will reference the linked file directly into your project. By default the
linked file will be visible under paket-files directory in project.
Referencing a zip file
If you reference a zip file it will be unzipped relative to the downloaded zip file.
The reference
1:
|
|
will:
- write the zip file to
paket-files/localhost/library/library.zip - unzip the content to
paket-files/localhost/library
Build action conventions
The build action is determined depending on the file extension:
-
If the file extension is equal to project type it is added as compile items. For
instance
.csfor.csprojprojects and.fsfor.fsprojprojects. - If the file extension is
.dllthen it is added as reference. - Otherwise it is added as an 'Add as link' content file.
Options for HTTP dependencies
When referencing a file using an http dependency, there are several options
that help you to deal with things like authentication and file name. The pattern
expected is:
1:
|
|
-
<file>allows you to define the path to which the file that is downloaded will be written to. For example specifying the following1:http http://www.fssnip.net/raw/1M/test1.fs src/test1.fswill write the file to
paket-files/www.fssnip.net/src/test.fs -
<source name>allows you to override the directory which the downloaded file is written to and also acts as a key to lookup any credentials that maybe associated for that key. For example you add credentials usingpaket config add-credentials MySourcethen each time Paket extracts a HTTP dependency withMySourceas a<source name>the credentials will be made part of the HTTP request. If no keys exist in the credential store then the request will be made without anyAuthorizationheaders.
Allowed schemes
All http://, https:// and file:// URIs schemes are allowed. Examples:
-
http https://raw.githubusercontent.com/fsprojects/Paket/master/src/Paket.Core/ProjectFile.fswill write the file topaket-files/raw.githubusercontent.com/ProjectFile.fs -
http file:///c:/projects/library.dllwill write the file topaket-files/localhost/library.dll
Updating HTTP dependencies
If you want to update a file you need to use the
paket install command or
paket update command with --force option.
Using groups for HTTP-dependent files can be helpful to reduce the number of files that are reinstalled.