我正在开发typescript库,我想在我的Web应用程序中使用它。
我想将所有库文件编译成单个library.js文件。
我尝试将ts编译器与tsconfig.json文件一起使用以及使用gulp任务进行编译,但在两种情况下我都遇到输出文件中的类顺序问题。
同样生成的代码有很多IIFE
var MyLibrary;
(function (MyLibrary) {
.....
})(MyLibrary || (MyLibrary = {}));
我想它应该只存在一次,而不是每个班级,对吗?
我的tsconfig.json:
{
"compilerOptions": {
"module": "amd",
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "dist/js/floor-map-designer.js",
"sourceMap": true
},
"exclude": [
"node_modules",
"dist",
"src/app.ts"
]
}
和gulp任务配置:
var tsProject = ts.createProject({
declarationFiles: true,
noExternalResolve: false,
module: 'AMD',
removeComments: true,
outFile: "my-library.js",
exclude: ["app.ts", "config.ts"]
});
var paths = {
npm: './node_modules/',
lib: "./lib/vendor/",
tsSource: ['./src/MyLibrary/**/*.ts', "./lib/typings/tsd.d.ts"],
tsOutput: "./dist/js/",
tsDef: "./lib/typings/"
};
gulp.task('ts-compile', function () {
var tsResult = gulp.src(paths.tsSource)
.pipe(ts(tsProject));
return merge([
tsResult.dts.pipe(gulp.dest(paths.tsDef)),
tsResult.js.pipe(gulp.dest(paths.tsOutput))
]);
});
我记得上次我使用的TypeScript用于创建包含大量
的自动生成的参考文件/// <reference path="...."
并添加
/// <ts:autoRef="referencesFile.ts">
到所有.ts文件。
但是我注意到TS编译器不再依赖于文件顺序而且我的IDE不再需要它了,所以如果可能的话我想避免它。
我还注意到使用--out选项被认为是坏的(至少根据这个网站:https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md)但是如何替换它?
我使用的是Typescript 1.7。
答案 0 :(得分:1)
我还注意到使用--out选项被认为是坏的(至少根据这个网站:https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md)但是如何替换它?
使用模块:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html
在你的情况下改变:
module: 'AMD',
removeComments: true,
outFile: "my-library.js",
到
module: 'amd',
removeComments: true,
并使用模块加载器(对于amd,这将是requirejs http://requirejs.org/)