Skip to content

Instantly share code, notes, and snippets.

@kmassada
Last active February 20, 2016 02:47
Show Gist options
  • Save kmassada/e2902110b1e36da890af to your computer and use it in GitHub Desktop.
Save kmassada/e2902110b1e36da890af to your computer and use it in GitHub Desktop.
Angular with Typescript project setup

init

mkdir nuProject
bower init
npm init -y

touch gulfile.js
mkdir -p public/{css,js,modules,partials}
touch public/css/style.css
touch public/js/script.js
  • public/css is to hold private css files
  • public/js is to hold private js files
  • public/modules is to hold all angular compiled js from ts
  • public/partials is to hold partial html files for angular app

TSD

tsd init
tsd install angular angular-resource --resolve --save

#tsd plugin
https://atom.io/packages/atom-typescript

we setup tsconfig.json to compile files ./public/modules

bower ui and angular files

bower install jquery bootstrap font-awesome  --save
bower install angular  --save

Gulp

gulp quick setup

npm install gulp wiredep gulp-inject --save-dev

we introduce injectAngularSrc to support injecting modules saved from typescript. name: 'angular' allows us to use <!-- angular:js --> as a place holder

  var injectAngularSrc = gulp.src('./public/modules/**/*.js',
  {read: false});
  var injectAngularOptions = {
    ignorePath: 'public',
    name: 'angular',
  };
"overrides": {
"bootstrap": {
"main": [
"dist/js/bootstrap.js",
"dist/css/bootstrap.min.css",
"less/bootstrap.less"
]
},
"font-awesome": {
"main": [
"less/font-awesome.less",
"css/font-awesome.min.css",
"scss/font-awesome.scss"
]
}
},
var gulp = require('gulp');
gulp.task('inject', function() {
var wiredep = require('wiredep').stream;
var inject = require('gulp-inject');
var injectSrc = gulp.src(['./public/css/*.css', './public/js/*.js'],
{read: false});
var injectOptions = {
ignorePath: 'public',
};
var injectAngularSrc = gulp.src('./public/modules/**/*.js',
{read: false});
var injectAngularOptions = {
ignorePath: 'public',
name: 'angular',
};
// Define where bowerjson options for wiredep
var options = {
bowerJson: require('./bower.json'),
directory: './public/lib',
ignorePath: '../../public/',
};
return gulp.src('./public/*.html')
.pipe(inject(injectAngularSrc,injectAngularOptions))
.pipe(inject(injectSrc,injectOptions))
.pipe(wiredep(options))
.pipe(gulp.dest('./public'));
});
<!DOCTYPE html>
<html ng-app="nuProject">
<head>
<meta charset="utf-8">
<title>Angular Typescript</title>
<!-- bower:css -->
<!-- endbower -->
<!-- inject:css -->
<!-- endinject -->
<!-- inject:js -->
<!-- endinject -->
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<div class="navbar-brand">Test Project</div>
</div>
</div>
</nav>
<div class="container">
<ng-view></ng-view>
</div>
<!-- bower:js -->
<!-- endbower -->
<!-- angular:js -->
<!-- endinject -->
</body>
</html>
{
"compilerOptions": {
"target": "ES5",
"outDir": "./public/modules"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment