【发布时间】:2015-12-19 23:20:37
【问题描述】:
我正在尝试构建一个基于 gulp 的进程,该进程将使用来自 bower 包的 AngularJS 和一个名为 debowerify 的工具(我相信它应该让我将已安装的 bower 组件插入到 TSIFY/Browserify 流中)。本质上,我想构建一个 app.js 文件以在我的应用程序中使用(包含我需要的所有 JS)。我一辈子都无法让 AngularJS 在这个过程中工作。我正在使用 index.ts 文件(见下文)来引入我的参考资料供 browserify 使用。 Angular 一直很棘手,因为编译过程对库进行了优化,除非您以某种方式使用导入,因此我在 index.ts 文件中测试了模块调用。
index.ts
//#### Type Definitions ####
/// <reference path="../../typings/angularjs/angular.d.ts" />
/// <reference path="greeter.ts" />
import angular = require('angular');
import greeter = require('./Greeter');
var greet = new greeter();
greet.sayHello();
angular.module('app', []);
这是我的gulp定义:
gulpfile.js
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var tsify = require('tsify');
var debowerify = require('debowerify');
var exorcist = require('exorcist');
var config = {
publicDir: __dirname + '/app',
path: __dirname + '/src/typescript',
main: 'index.ts',
result: 'app.js'
};
gulp.task('compile-ts', function(){
var bundler = browserify({
basedir: config.path,
debug: true
})
.add(config.path + '/' + config.main)
.plugin(tsify)
.transform(debowerify);
return bundler.bundle()
.pipe(exorcist(config.publicDir + '/app.js.map'))
.pipe(source(config.result))
.pipe(gulp.dest(config.publicDir));
});
我构建的自定义 TS 文件(即:greeter.ts)运行良好。但是,当我运行我的 gulp compile-ts 任务时,只有在浏览器通知我 angular 未定义(在调用 angular.module 时)时,我才在控制台中没有错误。我怀疑 CommonJS 可能不支持 Angular,但我也在互联网上找到了相反的信息。如果可能,我会尽量避免使用 AMD,但如果这是我唯一的选择,我肯定会重新考虑。如果我链接到我的 html 中的 angular 脚本而不是尝试将其导入到我的打字稿中,我就有这个应用程序工作,但我只是对这种方法不满意,因为我知道这应该可以工作。
【问题讨论】:
标签: angularjs typescript gulp browserify