Como você configura uma configuração de require.js com texto tipográfico?
Ok, eu tenho lido muitas perguntas e respostas sobre isso, e muito disso é lixo.
Eu tenho uma pergunta muito simples. Como faço o equivalente a isso:
require.config({
paths: {
"blah": '/libs/blah/blah',
}
});
require(['blah'], function(b) {
console.log(b);
});
Em texto datilografado?
Isso não funciona:
declare var require;
require.config({
paths: {
"blah": '/libs/blah/blah',
}
});
import b = require('blah');
console.log(b);
s.ts(8,1): error TS2071: Unable to resolve external module ''blah''.
s.ts(8,1): error TS2072: Module cannot be aliased to a non-module type.
error TS5037: Cannot compile external modules unless the '--module' flag is provided.
Compilando com o sinalizador --module, com um dummy blah.ts, o shim é compilado, mas a saída é:
define(["require", "exports", 'blah'], function(require, exports, b) {
require.config({
paths: {
"blah": '/libs/blah/blah'
}
});
console.log(b);
});
Parece que pode funcionar, mas na verdade não, o require.config édentro o bloco de exigência, está definidodepois de já é necessário.
TÃO! Acabei até agora comesta como uma solução:
class RequireJS {
private _r:any = window['require'];
public config(config:any):void {
this._r['config'](config);
}
public require(reqs:string[], callback:any):void {
this._r(reqs, callback);
}
}
var rjs = new RequireJS();
rjs.config({
paths: {
"jquery": '/libs/jquery/jquery',
"slider": '/js/blah/slider'
}
});
rjs.require(['slider'], function(slider) {
console.log(slider);
});
O que parece terrível.
Portanto, seja claro, dentro de módulos que dependem um do outro, esse tipo de coisa funciona perfeitamente:
import $ = require('jquery');
export module blah {
...
}
Eu só preciso de uma maneira adequada de definir a configuração do requirejs em um nível superior, para que os caminhos importados para os vários módulos nomeados estejam corretos.
(... e isso ocorre porque, em grande parte, as dependências de terceiros são resolvidas usando o bower e instaladas no / lib / blah, onde os arquivos shim que tenho para suas definições estão em src / deps / blah.d.ts, para que os caminhos de importação padrão estejam incorretos após mover os arquivos dos módulos gerados para / js / no site)
NB. Eu mencionei jquery aqui, mas o problema énão que jquery não funciona propriedade como um módulo AMD; Eu tenho um arquivo shquer jquery.ts.d para isso. O problema aqui é os caminhos do requirejs.