In one of my previous posts i found how to compile typescript files to javascript and i was very happy with myself because of my success. Since then i had little more experience with typescript. And now i have a few more points to share:
Using Import In Your Typescript Project
I have noticed many angularjs and angular2 projects using Import syntax. That way they not need to compile each file separately, instead you can compile only main file while all other files included in it (like in less or sass)
For exapmle :
Instead put all the things in your JS app.js file
//OOOOOLD STUFF.. BLAHHH
angular.module('myApp', [
'ngRoute',
'myApp.view1',
'myApp.view2',
'myApp.version'
]).
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
$locationProvider.hashPrefix('!');
$routeProvider.otherwise({redirectTo: '/view1'});
}]);
In typescript, you can move the config logic to its own separate config.ts file:
export function config($locationProvider: ng.ILocationProvider, $routeProvider: angular.route.IRouteProvider) {
$locationProvider.hashPrefix('!');
$routeProvider.otherwise({redirectTo: '/view1'});
};
and import it to app.ts main file:
///
import { config } from './config';///<--HERE
module angularSeed {
'use strict';
// Declare app level module which depends on views, and components
angular.module('myApp', [
'ngRoute',
'myApp.view1',
'myApp.view2',
'myApp.version'
]).config(config)
}
Import Is ES6 Syntax (Not Typescript!)
So, if you need to transpile your code either from ES6 and from typescript - i cannot think about other tool than webpack.
var webpack = require('webpack');
var path = require('path');
module.exports = {
context: path.join( __dirname, '/app'),
entry: 'app.ts',
output: {
filename: 'app.js',
path: path.join( __dirname, '/app')
},
resolve: {
root: path.join( __dirname, '/app'),
extensions: ['', '.ts', '.webpack.js', '.web.js', '.js']
},
module: {
loaders: [//<-- TYPESCRIPT, COOOL
// all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
{ test: /\.ts?$/, loader: 'ts-loader' }
]
}
}
Of course you need to include this webpack.config.js file in your project
And update package.json with too more entries:
"typings": "^0.8.1",
"webpack": "1.13.1",
Build The Project
Since we using webpack now for build the project, the command to compile will be:
node_modules/.bin/webpack
Hope you have fun reading...
Visit my cool REPO