I use a combination of PowerShell and SQL PSX
$Instance = 'ServerName'
$scriptargs = [Microsoft.SqlServer.Replication.scriptoptions]::Creation `
-bor [Microsoft.SqlServer.Replication.scriptoptions]::IncludeArticles `
-bor [Microsoft.SqlServer.Replication.scriptoptions]::IncludeGO`
-bor [Microsoft.SqlServer.Replication.scriptoptions]::IncludeCreateSnapshotAgent`
Get-ReplPublication $Instance | ForEach-Object {
$script = Get-ReplScript $_ -scriptOpts $scriptargs
$script | out-file -filepath $FilePath -force; }