我正在尝试根据Johnpapa's Angular Style Guide设置一个angularjs项目,同时使用TypeScrip和Gulp作为构建工具。我相信目前推荐的是Gulp而不是Grunt,但我对Gulp不是很有经验。
我所拥有的:
我的项目目前看起来是这样的:
src/
+- ts/ # contains .ts source files
+- typings/ # contains .d.ts typing definitions
+- html/ # contains .html files
dist/
+- bundle.js # single .js file containing compiled typescript and sourcemaps
按照Angular 样式指南,我为每个Angular 元素创建了一个单独的.ts
文件。
my-app.module.ts
----------------
angular.module('myApp', []);
对于模块的初始化和控制器的简单实现:
my-controller.controller.ts
----------------------------
export class MyController {
testString = 'test';
}
angular
.module('myApp')
.controller('MyController', MyController);
使用简单的tsconfig.json
配置TypeScrip。(请注意,filesGlob尚未激活-它将从TypeScrip 2.0开始可用)
tsconfig.json
-------------
{
"exclude" : [
"node_modules"
],
"filesGlob" : [
"./src/typings/index.d.ts",
"./src/ts/**/*.ts",
"!./node_modules/**/*.ts"
],
"compilerOptions": {
"noImplicitAny": true,
"target": "es5",
"sourceMap" : true,
"outFile" : "./dist/bundle.js",
"removeComments": false
}
}
我想要的是:
理想情况下,我想
- 让Gulp监控
./src/ts/**/*.ts
中新的或更新的.ts
文件 - 连接来自
./src/ts/**/*.ts
的所有文件。这是Angular 正常工作所必需的。如果不手动输入对其他.ts文件的引用,我尝试过的其他方法Requirejs或Browserify将无法找到这些文件。 - 使用
tsconfig.json
中的定义进行编译。这将考虑./src/typings/index.d.ts
中的类型(对于外部模块,包括‘ANGLING’)。还有源Map。 - 可能是丑化或巴宝化的步骤来完成它。
我尝试的内容:
我试着按照typescriptlang handbook的使用手册操作,但它使用的是Browserify,不适用于ANGLE。
GUP-TYPESERT也有一个关于连接文件的注解,但out
选项不是这样工作的:
var gulp = require('gulp');
var ts = require('gulp-typescript');
var tsProject = ts.createProject('tsconfig.json');
gulp.task('default', function () {
var tsResult = tsProject.src().pipe(ts(tsProject));
return tsResult.js.pipe(gulp.dest('dist'));
});
此配置将输出一个只有注解的空文件。
this question中提到的另一种方法:
gulp.task('ts', function () {
gulp.src('./src/ts/**/*.ts')
.pipe(ts({
noImplicitAny: true,
out: 'output.js'
}))
.pipe(gulp.dest('./tmp/ts'));
});
gulp.task('default', ['ts'], function() {
gulp.src(['./tmp/ts/output.js'])
.pipe(sourcemaps.init())
.pipe(uglify())
.pipe(sourcemaps.write('/'))
.pipe(gulp.dest('./dist/'));
});
但这带来了两个问题:1.尽管我只指出了./src/ts
中的.ts
文件,但类型脚本编译器开始从./node_modules
中的.ts中喷发错误。2.它仍然没有设法将所有东西连接在一起。
我在这里完全不知所措。有人能帮我设置这个构建脚本吗?令我惊讶的是,我在任何地方都找不到类似的工作演示。
解决方案:
我已经基于this answer中的解决方案配置了GULP环境,并删除了不在类型脚本模块内的类/对象的‘EXPORT’语句。
1条答案
按热度按时间von4xj4u1#
如果这有帮助,这里有一个Angular Typescript Gulp Tutorial,它有一个基本的打字、Angular 、Gulp等设置,将应用程序和供应商/节点文件连接在一起。还有demo code on github.
在我的示例中,我们使用Jade to HTML:
对于TypeScrip,我们编译成一个app.js文件:
对于Bower,我们将vendor.js中的所有js文件和vendor.css中的css文件合并:
自定义css:
以下是发生更改时重新加载浏览器的内容:
我的tsfig.json是这样的.我将从文本编辑器(Atom)自动编译的JS文件放入.tmp/js/tom中……有些人将.js放在与.ts相同的目录中,但我觉得这很令人困惑……文件越少对我越好: