2016-07-31 1 views
0

Привета У меня есть очень простого модуль машинописиМашинописи генерироваться JavaScript (уменьшенный через глотку) потери его обработчик при вызове его в другом яваскрипте

export module myFirstPackage { 
    export class test { 
     description : string 
     constructor() { 
      this.description = "This is a test module class"; 
     } 

     public getDescription() { 
      return this.description; 
     } 

    } 

    export function printDescription() : string { 
     alert(new test().getDescription); 
    } 
} 

Я создал файл яваскрипт и обезображенный, я стараюсь затем использовать изуродованный файл в другом приложении javascript в качестве библиотеки, но как я могу получить обработчик генерируемого ts javascript? Я не могу получить к нему доступ через свое имя модуля.

Я uglifyingt его через глотку

мой файл глотком выглядит следующим образом

var gulp = require("gulp"); 
var watchify = require("watchify"); 
var browserify = require("browserify"); 
var source = require('vinyl-source-stream'); 
var tsify = require("tsify"); 
var gutil = require("gulp-util"); 
var uglify = require('gulp-uglify'); 
var sourcemaps = require('gulp-sourcemaps'); 
var buffer = require('vinyl-buffer'); 
var sass = require('gulp-sass'); 
var minifyCss = require('gulp-minify-css'); 
var concat = require('gulp-concat'); 
var rename = require('gulp-rename'); 

//Variables 
var conf = { 
    html: ['src/html/**/*.html'], 
    scss: ['src/scss/**/*.scss'], 
    jsdistAll: 'src/js/', 
    jsdist: 'www/js/', 
    htmldist: 'www/templates/', 
    cssdist: 'www/css/', 
    jsfilename: 'all.js', 
    cssfilename: 'style.css', 
    tsentry: 'src/ts/main.ts', 
    debugts: true 
}; 
//TS code handling 
var watchedBrowserify = watchify(browserify({ 
    basedir: '.', 
    debug: conf.debugts, 
    entries: [conf.tsentry], 
    cache: {}, 
    packageCache: {} 
}).plugin(tsify)); 

function bundle() { 
    return watchedBrowserify 
     .bundle() 
     .pipe(source(conf.jsfilename)) 
     .pipe(gulp.dest(conf.jsdistAll)) 
     .pipe(buffer()) 
     .pipe(sourcemaps.init({loadMaps: true})) 
     .pipe(uglify()) 
     .pipe(rename({ extname: '.min.js' })) 
     .pipe(sourcemaps.write('./')) 
     .pipe(gulp.dest(conf.jsdist)); 
} 

watchedBrowserify.on("update", bundle); 
watchedBrowserify.on("log", gutil.log); 

//Html handling 
gulp.task("html", function() { 
    return gulp.src(conf.html) 
     .pipe(gulp.dest(conf.htmldist)); 
}); 

//Css handling 
gulp.task('sass', function() { 
    return gulp.src(conf.scss) 
     .pipe(sourcemaps.init()) 
     .pipe(sass({includePaths : ['_/'+conf.scss]}).on('error', sass.logError)) 
     .pipe(gulp.dest(conf.cssdist)) 
     .pipe(minifyCss({ 
      keepSpecialComments: 0 
     })) 
     .pipe(rename({ extname: '.min.css' })) 
     .pipe(sourcemaps.write('./')) 
     .pipe(gulp.dest(conf.cssdist)) 
}); 

//Watch task 
gulp.task('watch', function() { 
    gulp.watch(conf.html, ['html']); 
    gulp.watch(conf.sass, ['sass']); 
}); 

//initialize task 
gulp.task("default", ["html", "sass", "watch"], bundle); 

Другой вопрос о строке часы работы для HTML, но не для дерзости.

+0

Конечно, я всегда могу вручную экспортировать модуль с помощью явного модуля подключения к объекту окна, но, хотя мне это не нужно. – user2412555

ответ

0

Это не имеет ничего общего с минификацией, но с помощью браузера укажите область вашего модуля (как и должно быть). Вам нужно указать браузеру, чтобы явным образом разоблачить ваш модуль и функцию require.

Добавить в вашу browserify цепи в глотке:

.require(fooFilename, { expose: "foo" }) 

... и в своей второй половине проекта:

var foo = require("foo"); 
foo.fooExport; 

Стандартная минификация никогда не должен оказывать влияние на ничего доступном , Кстати.

С другой стороны вы могли бы просто использовать не ES6 модули, что происходит, когда вы удалите оператор верхнего уровня экспорта перед пространством имен (вы используете старый модуль ключевое слово, но это фактически известен как namespace сейчас). В этом случае вам не потребуется браузеру, просто gulp-typescript или что-то и concat ваш выход.

+0

Я думаю, что проблема здесь была бы в том, что я пытаюсь назвать ее в приложении без узлов, в ионном интерфейсе, мне нужен модуль, который будет выставлен глобально без каких-либо необходимости. – user2412555

+0

Затем удалите экспорт верхнего уровня перед myFirstPackage и не используйте функцию браузера, единственной целью которой является объединение узлов как модулей для использования в браузере. – sgrtho

Смежные вопросы