Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/brn/typescript-middleware
typescript compile server for [connect/express]-middleware
https://github.com/brn/typescript-middleware
Last synced: about 2 months ago
JSON representation
typescript compile server for [connect/express]-middleware
- Host: GitHub
- URL: https://github.com/brn/typescript-middleware
- Owner: brn
- Created: 2014-04-25T10:06:00.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-03-02T09:02:46.000Z (almost 8 years ago)
- Last Synced: 2024-10-08T12:36:54.812Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 4.69 MB
- Stars: 9
- Watchers: 5
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- es6-tools - typescript-middleware
README
## What's this
The on the fly typescript compile server for express/connect.
## Install
`npm install typescript-middleware`
## Usage
```javascript
var tscMiddleware = require('typescript-middleware');
var connect = require('connect');
var app = connect();
app.use('typescript', tscMiddleware({
outDir: 'js/out', // The output directory of compilation result.
sourceMap: true, // [OPTIONAL] Generate sourceMap file
sourceRoot: '', // [OPTIONAL] Source root path.
mapRoot: './ts', // [OPTIONAL] SourceMap root directory
basePath: './ts', // Typescript root directory
removeComments: false, // [OPTIONAL] [true/false] Save comments on generated source.
target: 'es3', // [es3/es5] Target ecmascript environment.
module: 'amd', // [amd/commonjs] Target javascript module.
useCaseSensitiveFileResolution: true, // [OPTIONAL] [true/false] To use case sensitive module search.
locale: 'en', // [OPTIONAL] [en/ja-jp] Locale.
noImplicitAny: false, // [OPTIONAL] [true/false] Whether allow implicit any or not.
requirejsPath: 'js/libs/requirejs/require.js', // The path to the requirejs
requirejsConfigPath: 'js/requirejs.config.js', // The path to the requirejs config file.
urlRoot: './', // The url root path.
updateAll: true // [OPTIONAL] [true/false] Whether record all typescript file mtime before server running or not.
respond: true // [OPTIONAL] [true/false] Respond compilation result as requirejs main.
}));
```## Compilation
All typescript files are compiled if mtime is updated,
to get mtime value, we use `fs.statSync`## Options
**outDir**
The output directory of the compilation results.
**sourceMap**
[OPTIONAL] Generate sourceMap files.
values: true/false
default: false**sourceRoot**
[OPTIONAL] The source root path for typescript.
**mapRoot**
[OPTIONAL] The source map root path.
**basePath**
The typescript root path.
**removeComments**
[OPTIONAL] Whether remove comments from generated source code or not.
values: true/false
default: true**target**
[OPTIONAL] Target runtime for generated source code.
values: 'es3'/'es5'
default: 'es5'**module**
[OPTIONAL] The module pattern for generated source code.
values: 'amd'/'commonjs'
default: 'amd'**useCaseSensitiveFileResolution**
[OPTIONAL] Whether search referenced module by case sensitive.
value: true/false
default: true**locale**
[OPTIONAL] The locale
value: 'en'/'ja-jp'
default: 'en'**noImplicitAny**
[OPTIONAL] disallow implicit any type.
value: true/false
default: false**requirejsPath**
[OPTIONAL] Specify requirejs path for auto running.
This option affect only if respond option is true.**requirejsConfigPath**
[OPTIONAL] Specify requirejs config file path.
This option affect only if respond option is true.**urlRoot**
The root path of static files.
**updateAll**
[OPTIONAL] Collect mtime of the all modules, before accessed.
values: true/false
default: false**respond**
[OPTIONAL] Respond compilation result as requirejs main file.
values: true/false
default: true**usePathname**
[OPTIONAL] Use path name for decide compile target.
If this option is false, compile target is decided by 'path' query parameter.
values: true/false
default: false## Example(respond = true, usePathname = false)
**Server**
```javascript
var connect = require('connect');
var app = connect();
app.use('typescript', tscMiddleware({
basePath : '../ts/src',
sourceMap: true,
target: 'es3',
module: 'amd',
sourceMap: true,
urlRoot: '../',
outDir: '../js/output',
requirejsPath: '../js/node_modules/requirejs/require.js',
requirejsConfigPath: '../js/conf/requirejs.config.js',
updateAll: true
})
.use(connect.static('../'))
.listen(8080);
```**HTML**
```html
```
**Response**
```javascript
!function() {
document.writeln('<' + '/script>');
document.writeln('<script type="text/javascript" src="/js/node_modules/requirejs/require.js" data-main="/js/output/foo/bar/main.js"><' + '/script>');
}();
```## Example(respond = false, usePathname = true)
**Server**
```javascript
var connect = require('connect');
var app = connect();
app.use(tscMiddleware({
basePath : '../ts/src',
sourceMap: true,
target: 'es3',
module: 'amd',
sourceMap: true,
urlRoot: '../',
outDir: '../js/output',
requirejsPath: '../js/node_modules/requirejs/require.js',
requirejsConfigPath: '../js/conf/requirejs.config.js',
updateAll: true,
respond: false,
usePathname: true
})
.use(connect.static('../'))
.listen(8080);
```**HTML**
```html
<!doctype html>
<html>
<head>
<!-Specify output file.-->
<script type="text/javascript" src="//localhost:8080/js/output/main/foo/bar/main.js">