将RequireJS和TypeScript混合在一起-如何为生产进行编译?
我不熟悉使用TypeScript和RequireJS,我正在转换一个用木偶网/主干网编写的大型应用程序 我对每个ts文件中的TypeScript依赖项和不符合AMD的文件的RequireJS配置垫片中的依赖项之间的关系感到困惑。我的应用程序使用ts文件和requirejs配置垫片部分中的单个文件和依赖项可以正常加载 我试着把我的打字脚本文件编译成一个输出文件;ts transpiler是否知道垫片部分中定义的依赖关系?这似乎不是因为我的单个输出文件没有所有必需的文件 这是错误的做法吗将RequireJS和TypeScript混合在一起-如何为生产进行编译?,typescript,requirejs,Typescript,Requirejs,我不熟悉使用TypeScript和RequireJS,我正在转换一个用木偶网/主干网编写的大型应用程序 我对每个ts文件中的TypeScript依赖项和不符合AMD的文件的RequireJS配置垫片中的依赖项之间的关系感到困惑。我的应用程序使用ts文件和requirejs配置垫片部分中的单个文件和依赖项可以正常加载 我试着把我的打字脚本文件编译成一个输出文件;ts transpiler是否知道垫片部分中定义的依赖关系?这似乎不是因为我的单个输出文件没有所有必需的文件 这是错误的做法吗 谢谢…我不
谢谢…我不会尝试让TypeScript编译器执行绑定过程。相反,我将有一个两步构建过程
只是Mark答案的一个附加部分,带有现实生产要求JS设置,包括垫片: 运行类型脚本编译器:
tsc -p .
具有以下项目级别
tsconfig.json
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": false,
"target": "es5",
"outDir": "scripts/dist",
}
接下来,此r.js命令将执行以下操作:
node r.js -o buildSpec.js name=src/init mainConfigFile=deps.js baseUrl=../
使用以下deps.js
require.config({
baseUrl: "scripts",
// The shim config allows us to configure dependencies for
// scripts that do not call define() to register a module
shim: {
'underscore': {
exports: '_'
},
'jquery': {
exports: '$'
}
},
paths: {
chartJs: '//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.bundle.min',
appRouter: 'infra/appRouter',
paymentsHub: 'infra/paymentsHub'
}
});
buildSpec.js:
({
out: "../target/app-optimized.js",
include:['someExternalModule'],
paths: {
jquery: 'lib/jquery/2.2.4/jquery.min'
}
})
require.config({
urlArgs: window.siteVersion,
waitSeconds: 20
});
require(['scripts/controller'], function () { ... });
src/init.js:
({
out: "../target/app-optimized.js",
include:['someExternalModule'],
paths: {
jquery: 'lib/jquery/2.2.4/jquery.min'
}
})
require.config({
urlArgs: window.siteVersion,
waitSeconds: 20
});
require(['scripts/controller'], function () { ... });
我的理解是tsc将只合并它传输的TS文件。如果您想包含其他文件,如填隙片中提到的文件,则需要使用构建工具。但在这种情况下,你就不需要垫片了。您的目标是生成单个文件吗?谢谢您的回答。嗯,我想为大部分应用程序创建一个文件输出。我有一些实用程序文件,这些文件由我们应用套件中的不同应用程序共享(每个应用程序相当于一个页面)。我想为这些实用程序创建捆绑包(例如,jqueryplugins捆绑包、内部实用程序捆绑包等等)。以及应用程序特定代码的单个文件。我已经开始考虑使用requirejs来指定捆绑包,但我不清楚如何构建所有这些。提前谢谢。