Top Banner
TechSummit: Web & Cloud Pure Technology. Päckchen hier, Päckchen da Daniel Fisher
85

2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Jul 19, 2015

Download

Internet

Daniel Fisher
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

TechSummit: Web & Cloud Pure Technology.

Päckchen hier, Päckchen da

Daniel Fisher

Page 2: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

• danielfisher.com

– Developer, Architect, Coach, Trainer

• lennybacon.com

– Blog

• Justcommunity.de

– Mit-Gründer und Vorstand

• nrwconf.de

– Mit-Gründer und Organisator

• twitter.com

– @lennybacon

Daniel Fisher

Page 3: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

EFFICIENT COMMUNICATION…

Page 4: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Agenda

• Packagemanager?

• Gem

• NPM

• Bower

• NuGet

• Paket

• Chocolatey/OneGet

Page 5: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Once upon a time

In an age were we don't want to build everything on our own time shifted from building things to manage things…

• Search for {x} with your favorite search engine

• Download {x}

• Install {x}

• Fail because it requires {y}

Welcome to the Infinite loop!

Page 6: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

https://www.flickr.com/photos/49889874@N05/4772680734/

Page 7: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Component based development

• If you build components packages can dramatically reduce time spend to• Check out from source control management

• Build *the* application

• Run tests

• …

Page 8: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Dependencies

• Setting up things• Frameworks

• Libraries

• Tools

• Infrastructure

Page 9: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

http://maxogden.com/nested-dependencies.html

Dependency types

Page 10: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Dependency types

Flat

• Simple.

• Dependency conflicts

Nested

• Complicated

• No dependency conflicts

Page 11: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da
Page 12: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is ruby?

• Developed by Yukihiro Matsumoto in the mid 90's• Object oriented

• Procedural

• Functional

• Dynamically typed

• Reflection

• Garbage Collection

• Since 2012 Standardized:ISO/IEC 30170

http://rubyinstaller.org/

Page 13: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is RubyGems?

• Package manager for the Ruby programming language• Provides a standard format for distributing Ruby programs and libraries.

• Self-contained format called a "gem"

• Tool designed to easily manage the installation of gems

• Server for distributing them.

• RubyGems was created in about November 2003 and is now part of the standard library from Ruby version 1.9.

https://rubygems.org/

Page 14: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Validate GEM Installation

gem --version

Page 15: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Install a Package

gem install awesome_gem42

Page 16: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

DEMO

Page 17: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

*.gemspec file

Gem::Specification.new do |s|

s.name = %q{awesome_gem42}

s.version = "1.0.0"

s.authors = ["Daniel Fisher"]

s.date = %q{2015-05-06}

s.summary = %q{awesome_gem42 is the best}

s.files = [

"lib/awesome_gem42.rb"

]

s.require_paths = ["lib"]

end

Page 18: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Build and Publish Package

gem build awesome_gem42.gemspec

gem install awesome_gem42-1.0.0.gem

Page 19: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Using the Package

#ruby app.rb

require 'awesome_gem42'

AwesomeGem42::WhoIs.awesome?

Page 20: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da
Page 21: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is npm?

• Node.js Package Manager• Open Source founded by Isaac Z. Schlueter

• The package manager for Javascript.

• Installed with node.js!

• Nested dependency trees

• Install modules used in a node.js environment, or development tools built using node.js such Karma, lint, minifiers and so on

https://www.npmjs.com/

Page 22: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Validate NPM Installation

npm --version

Page 23: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

DEMO

Page 24: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Install a package

# Local Installation

npm install --save {package name}

# --save adds package to packages.json

# --save-dev adds package to packages.json

# Global Installation

npm install --global {package name}

npm install -g {package name}

Page 25: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Uninstall a package

# Local Installation

npm uninstall --save {package name}

# Global Installation

npm uninstall -g {package name}

Page 26: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Update all packages

# Local Installation

npm update

# Global Installation

npm install --global {package name}

npm install -g {package name}

Page 27: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Creating a NPM

npm init

Page 28: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Create a user account

npm adduser

Page 29: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Publish a package

npm publish

Page 30: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Unpublish a package

npm unpublish {package}@{version}

Page 31: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Package Intellisense

• https://visualstudiogallery.msdn.microsoft.com/65748cdb-4087-497e-a394-2e3449c8e61e

Page 32: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da
Page 33: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is bower?

• Open Source created at twitter by

Jacob Thornton an Alex MacCaw

• Web sites are made of lots of things

• Frameworks

• Libraries

• Assets & Utilities

• Bower manages all these things for you.

• Frontend Dependency Management

• Flat dependency tree!

• Maintains a single version of a module

http://bower.io/

Page 34: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Install Bower

# Global Install

npm install --global bower

# Local Install

npm install --global bower

Page 35: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Validate Bower Installation

bower --version

Page 36: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

DEMO

Page 37: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Install a package

bower install --save angular

# --save adds package to bower.json

Search available packages at:

https://bower.io/search/

Page 38: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

List installed packages

bower list

Page 39: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Create a package

bower init

Page 40: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Link a repository

Page 41: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Publish a package

# Push sources to a git repository

bower register my-first-bower https://github.com/lennybacon/bower-samples

Page 42: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Git access token

• To remove a published package you need to prove you are the

owner of the Github repository…

Page 43: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Unpublish a package

# CURL*

curl -X DELETE "https://bower.herokuapp.com/packages/<package>?access_token=<token>"

# Powershell Alias

curl -Method DELETE -Uri "https://bower.herokuapp.com/packages/<package>?access_token=<token>"

*CURL for Windows: http://www.paehl.com/open_source/?CURL_7.41.0

Page 44: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Package Intellisense

• https://visualstudiogallery.msdn.microsoft.com/65748cdb-4087-497e-a394-2e3449c8e61e

Page 45: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da
Page 46: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is NuGet

• Open Source Project started at Microsoft

by David Fowler and Davig Ebbo

• Intended to solve the issues related to management of 3rd party

assembly dependencies

• Microsoft Non .NET Framework stuff

• Open Source Libraries

• You own libraries!

http://nuget.org

Page 47: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is NuGet

C#C#C#

WCF Data Services

Gallery Server

NuGet Core

VS Addin

ConsoleApp

MsBuild Tasks

Page 48: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

DEMO

Page 49: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Visual Studio AddIn

• An embedded Powershell Console Window:

Also available in Visual Studio Express!!!

Page 50: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Visual Studio AddIn

• An embedded Powershell Console Window:

Page 51: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Powershell Commands

Get-Package -ListAvailable

Install-Package {packageid}

Remove-Package {packageid}

Page 52: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Console App

Page 53: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

MsBuild Task<?xml version="1.0" encoding="utf-8"?><Project

DefaultTargets="PackageBuild"xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<UsingTask TaskName="NuPack.NuGet.NuPack" AssemblyFile="NuGet.MSBuild.dll" /> <ItemGroup>

<NuSpecFiles Include="..\*.*\*.nuspec" /></ItemGroup><Target Name="PackageBuild">

<NuGet.MSBuild.NuGetCondition="Exists(@(NuSpecFiles))"SpecFile="@(NuSpecFiles)"PackageDir="..\bin\"

/></Target>

</Project>

Page 54: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

NuSpec

<?xml version="1.0"?><packagexmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">

<metadata><id>System.Web.Mvc</id><version>3.0</version><authors>Microsoft Corporation</authors><owners>Microsoft Corporation</owners><licenseUrl>http://www.asp.net/mvc</licenseUrl><projectUrl>http://www.asp.net/mvc</projectUrl><requireLicenseAcceptance>false</requireLicenseAcceptance><description>The Microsoft MVC Framework.</description><tags>ASP.NET MVC</tags>

</metadata></package>

Page 55: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

NuSpec

<?xml version="1.0"?><packagexmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"><metadata><id>$id$</id><version>$version$</version><authors>$author$</authors><owners>$author$</owners><licenseUrl>http://www.asp.net/mvc</licenseUrl><projectUrl>http://www.asp.net/mvc</projectUrl><requireLicenseAcceptance>false</requireLicenseAcceptance><description>$description$</description><tags>ASP.NET MVC</tags>

</metadata></package>

[assembly: AssemblyTitle("MyLibrary")][assembly: AssemblyDescription("My cool library")][assembly: AssemblyCompany("Daniel Fisher")][assembly: AssemblyProduct("lennybacon's super tools")][assembly: AssemblyVersion("0.9.0.0")]

Page 56: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Dependencies

<dependencies>

<dependency id="EntityFramework" version="6.1.0" />

</dependencies>

Page 57: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Lowest possible below 3.0

<dependencies>

<dependency id="MyOtherPackage" version="[,3.0)" />

</dependencies>

Page 58: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Lowest possible between 2.0 and 3.0

<dependencies>

<dependency id="MyOtherPackage" version="[2.0,3.0)" />

</dependencies>

Page 59: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Latest and greatest

<dependencies>

<dependency id="MyOtherPackage" version="" />

</dependencies>

Page 60: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Console Commands

nuget pack {package.nuspec}

nuget Push {package.nupkg} {your_api_key} -src {server}

Page 61: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

web.config.transform

<?xml version="1.0"?><configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<system.webServer><modules>

<add name="MyNuModule" type="…" xdt:Transform="Insert"

/>

<add name="MyNuModule" xdt:Transform="Remove" xdt:Locator="Match(name)"

/></modules>

</system.webServer></configuration>

Page 62: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

MyFile.cs.pp

namespace $safeprojectname${

}

• http://docs.nuget.org/docs/creating-packages/configuration-file-and-source-code-transformations

• http://msdn.microsoft.com/en-us/library/eehb4faa(v=vs.80).aspx

Page 63: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Package Manager Powershell Scripts

• Init.ps1 runs the first time a package is installed in a solution.

• The script also runs every time the solution is opened.

• Install.ps1 runs when a package is installed in a project.

• Requires files in the content or lib directory for Install.ps1 to run.

• If your package also has ,an init.ps1 , install.ps1 runs after init.ps1.

• Uninstall.ps1 runs every time a package is uninstalled.

• NuGet_profile.ps1 runs when the Package Manager Console is

initialized – NOT part of the package!

Page 64: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Package Manager Powershell Scripts

• At the top of your file, add this line: param($installPath, $toolsPath, $package, $project)

• $installPath is the path to the installed package.

• $toolsPath is the path to the tools.

• $package is a reference to the package object.

• $project is a reference to the EnvDTE project object.

• This will be null in Init.ps1.

• When you are testing $project in the console while creating your

scripts, you can set it to:

$project = Get-Project

Page 65: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da
Page 66: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is packet?

• Open Source started by Steffen Forkmann

• Paket is a dependency manager for .NET and Mono projects• NuGet packages

• Files in GitHub repositories

• It enables precise and predictable control over what packages the projects within your application reference.

• Global view on dependencies

• Versionsnumber not in the path

• plain text files and command line

https://github.com/fsprojects/Paket

Page 67: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

DEMO

Page 68: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Install Paket

Install-Package Paket

Page 69: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

The files

• paket.dependencies: Global definition of dependencies

• paket.lock: List of used versions for all dependencies

• paket.references: Dependency definition per project

Page 70: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Packet.dependencies

source https://nuget.org/api/v2

nuget Newtonsoft.Json // any version

nuget UnionArgParser >= 0.7 // x >= 0.7

nuget log4net ~> 1.2 // 1.2 <= x < 2

nuget NUnit prerelease // any version incl. prereleases

github forki/FsUnit FsUnit.fs

Page 71: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Packet.references

Newtonsoft.Json

UnionArgParser

NUnit

Page 72: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Installing packages

paket install

Page 73: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Check for updates

paket outdated

# update packages

paket update

Page 74: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Check for updates

paket outdated

Page 75: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Restore

paket restore

Page 76: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Convert from Nuget

paket convert-from-nugget

paket simplify

Page 77: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da
Page 78: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

What is Chocolatey

• Open Source started by Rob Reynolds

• Chocolatey is a package manager for Windows• like apt-get or yum but for Windows

• Quickly instal applications and tools

• Built on the NuGet infrastructure

• Using PowerShell

https://github.com/chocolatey

Page 79: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

DEMO

Page 80: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Install Chocolatey

iex (new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'

))

Page 81: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Installing Packages

choco install {package}

Page 82: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Installing a developer box

choco install dotnet4.5

choco install python

choco install easy.install

choco install ruby

choco install java

choco install java.jdk

choco install php

choco install git

choco install poshgit

choco install hg

choco install sourcetree

choco install svn

choco install firefox

choco install chrome

choco install 7zip.install

choco install nodejs.install

choco install mysql.workbench

choco install logparser

choco install octopusdeploy.tentacle

choco install markdownpad2

choco install nuget.commandline

choco install dropbox

choco install fiddler

choco install cmder

choco install visualstudio2013ultimate

choco install resharper

choco install sublimetext3

choco install webpi

choco install lockhunter

choco install sqlserver2014express

choco install postgresql

choco install mongodb

choco install mysql

choco install sqllite

choco install rabbitmq

choco install redis

choco install linqpad

choco install Microsoft-build-tools

choco install docker

choco install wixtoolset

Page 83: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

OneGet

Page 84: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

READ LENNYBACON.COM

FOLLOW @LENNYBACON

LINK LINKEDIN.COM/IN/LENNYBACON

XING XING.COM/PROFILE/DANIEL_FISHER

FRIEND FB.COM/DANIEL.FISHER.LENNYBACON

MAIL [email protected]

CALL +49 (176) 6159 8612

Page 85: 2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, Päckchen da

Wir freuen uns über Ihr Feedback!

http://aka.ms/TechSummitFB