вторник, 2 февраля 2016 г.

Настройка TypeScript + Gulp

1. В папку с проектом установить модули

npm install gulp
npm install gulp-typescript
npm install gulp-tslint

2. Создать файл Gulpfile.js с кодом

var gulp = require('gulp')
    , typescript = require('gulp-typescript')
    , typescriptLint = require('gulp-tslint');
   
// Lint all typescript files
gulp.task('typescript-lint', function () {
    return gulp.src(['src/**/*.ts']).pipe(typescriptLint({configuration: 'tslint.json'}))
                                                .pipe(typescriptLint.report('prose'));
});
   
// Build all typescript files
gulp.task('typescript-build', function () {
    var typescriptResult = gulp.src(['src/**/*.ts']).pipe(typescript(typescript.createProject('tsconfig.json')));
    return typescriptResult.js.pipe(gulp.dest('build'));
});

// Watch all typescript files for changes and rebuild everything
gulp.task('typescript-watch', function () {
    gulp.watch(['src/**/*.ts'], [
          'typescript-lint'
        , 'typescript-build'
    ]);
});

// Default gulp task
gulp.task('default', [
      'typescript-lint'
    , 'typescript-build'
    , 'typescript-watch'
]);

3. Создать файл rungulp.js с кодом

// Execute gulp task
var command = 'node ./node_modules/gulp/bin/gulp.js default'
    , process = require('child_process').exec(command);
process.stdout.on('data', function(data) {console.log(data);});
process.stderr.on('data', function(data) {console.log(data);});
process.on('close', function(code) {if (code === 0) {console.log('Done');} else {console.log('Exit code: ' + code);}});

4. Создать файл tsconfig.json с кодом

{
      "compilerOptions": {
              "declaration": false
            , "emitDecoratorMetadata": false
            , "experimentalDecorators": false
            , "inlineSourceMap": false
            , "inlineSources": false
            , "isolatedModules": false
            , "mapRoot": ""
            , "module": "amd"
            , "newLine": "CRLF"
            , "noEmit": false
            , "noEmitHelpers": true
            , "noImplicitAny": true
            , "noResolve": true
            , "outFile": "final.js"
            , "preserveConstEnums": false
            , "removeComments": false
            , "sourceMap": false
            , "sourceRoot": ""
            , "suppressImplicitAnyIndexErrors": false
            , "target": "es3"
      }
}

5. Создать файл tsling.json с кодом

{
  "rules": {
      "ban": false
    , "class-name": true
    , "comment-format": [true, "check-space"]
    , "curly": true
    , "eofline": false
    , "forin": true
    , "indent": [true, "spaces"]
    , "jsdoc-format": true
    , "label-position": true
    , "label-undefined": true
    , "max-line-length": [true, 500]
    , "member-access": true
    , "member-ordering": [
          true
        , "public-before-private"
        , "static-before-instance"
        , "variables-before-functions"
      ]
    , "no-any": true
    , "no-arg": true
    , "no-bitwise": true
    , "no-console": [
          true
        , "debug"
        , "info"
        , "time"
        , "timeEnd"
        , "trace"
      ]
    , "no-consecutive-blank-lines": true
    , "no-construct": true
    , "no-constructor-vars": true
    , "no-debugger": false
    , "no-duplicate-key": true
    , "no-duplicate-variable": true
    , "no-empty": true
    , "no-eval": true
    , "no-internal-module": true
    , "no-string-literal": false
    , "no-trailing-comma": true
    , "no-trailing-whitespace": true
    , "no-unreachable": true
    , "no-unused-expression": true
    , "no-unused-variable": true
    , "no-use-before-declare": true
    , "one-line": [
          true
        , "check-open-brace"
        , "check-catch"
        , "check-else"
        , "check-whitespace"
      ]
    , "quotemark": [true, "single"]
    , "radix": true
    , "semicolon": true
    , "switch-default": true
    , "triple-equals": [true, "allow-null-check"]
    , "typedef": [
          true
        , "call-signature"
        , "parameter"
        , "property"
        , "variable-declaration"
        , "member-variable-declarations"
      ]
    , "typedef-whitespace": [
          true
        , {
              "call-signature": "nospace"
            , "index-signature": "nospace"
            , "parameter": "nospace"
            , "property-declaration": "nospace"
            , "variable-declaration": "nospace"
        }
      ]
    , "variable-name": false
    , "whitespace": [
          true
        , "check-branch"
        , "check-decl"
        , "check-module"
        , "check-operator"
        , "check-separator"
      ]
  }
}

6. Поместить исходные TypeScript-файлы в папку src

src/module-1.ts
src/module-2.ts

7. Скомпилировать TypeScript-файлы в JavaScript-файлы командой

node rungulp.js

Комментариев нет:

Отправить комментарий