Skip to content

Janus-vistaprint/gulp-dotnet-cli

Repository files navigation

Coverage Status Build Status Maintainability npm

gulp-dotnet-cli

gulp plugin for the dotnet cli.

You can view our Api docs, or read this blog post

Each interface in the docs should describe the objects you must pass in. For example IBuildModel is the interface containing the declaration of options for the build action.

Usage

You must have the dotnet cli installed and on your path.

First, install gulp-dotnet-cli

npm install --save-dev gulp-dotnet-cli

Then add it to your gulpfile.js

Simple Example:

let {clean, restore, build, test, pack, publish, run} = require('gulp-dotnet-cli');
let gulp = require('gulp');
//clean
gulp.task('clean', ()=>{
    return gulp.src('**/*.csproj', {read: false})
            .pipe(clean());
});
//restore nuget packages
gulp.task('restore', ()=>{
    return gulp.src('**/*.csproj', {read: false})
            .pipe(restore());
});
//compile
gulp.task('build', ['restore'], ()=>{
                    //this could be **/*.sln if you wanted to build solutions
    return gulp.src('**/*.csproj', {read: false})
        .pipe(build());
});
//run unit tests
gulp.task('test', ['build'], ()=>{
    return gulp.src('**/*test*.csproj', {read: false})
        .pipe(test())
});
//compile and publish an application to the local filesystem
gulp.task('publish', ['test'], ()=>{
    return gulp.src('src/TestWebProject.csproj', {read: false})
                .pipe(publish({configuration: 'Release'}));
});
//run
gulp.task('run', ()=>{
    return gulp.src('src/TestWebProject.csproj', {read: false})
            .pipe(run());
});

More Complicated example:

let {clean, restore, build, test, pack, publish, run} = require('gulp-dotnet-cli');
let version = `1.3.` + (process.env.BUILD_NUMBER || '0');
let configuration = process.env.BUILD_CONFIGURATION || 'Release';
let gulp = require('gulp');
//clean
gulp.task('clean', ()=>{
    return gulp.src('**/*.csproj', {read: false})
            .pipe(clean());
});
//restore nuget packages
gulp.task('restore', ()=>{
    return gulp.src('**/*.csproj', {read: false})
            .pipe(restore());
});
//compile
gulp.task('build', ['restore'], ()=>{
                    //this could be **/*.sln if you wanted to build solutions
    return gulp.src('**/*.csproj', {read: false})
        .pipe(build({configuration: configuration, version: version}));
});
//run unit tests
gulp.task('test', ['build'], ()=>{
    return gulp.src('**/*test*.csproj', {read: false})
        .pipe(test())
});
//compile and publish an application to the local filesystem
gulp.task('publish', ['test'], ()=>{
    return gulp.src('src/TestWebProject.csproj', {read: false})
                .pipe(publish({configuration: configuration, version: version}));
});
//convert a project to a nuget package
gulp.task('pack', ['build'], ()=>{
    return gulp.src('**/TestLibrary.csproj', {read: false})
                .pipe(pack({
                            output: path.join(process.cwd(), 'nupkgs') , 
                            version: version
                            }));
});
//push nuget packages to a server
gulp.task('push', ['pack'], ()=>{
    return gulp.src('nupkgs/*.nupkg', {read: false})
                .pipe(push({
                    apiKey: process.env.NUGET_API_KEY, 
                    source: 'https://myget.org/f/myfeedurl'}));
});
//run
gulp.task('run', ()=>{
    return gulp.src('src/TestWebProject.csproj', {read: false})
                .pipe(run());
});

You can find a working example in our test directory

Generating docs

You can generate new docs to host by running yarn run docs or npm run docs. The docs folder is tracked with git lfs, you must have it installed if you wish to update the docs folder.