Jak skonfigurować konfigurację require.js za pomocą maszynopisu?
Ok, czytałem wiele pytań i odpowiedzi na ten temat, a wiele z nich to śmieci.
Mam bardzo proste pytanie. Jak zrobić odpowiednik tego:
require.config({
paths: {
"blah": '/libs/blah/blah',
}
});
require(['blah'], function(b) {
console.log(b);
});
W maszynopisie?
To nie działa:
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.
Kompilowanie z flagą --module, z kompilacją manekinów bla.ts, ale dane wyjściowe to:
define(["require", "exports", 'blah'], function(require, exports, b) {
require.config({
paths: {
"blah": '/libs/blah/blah'
}
});
console.log(b);
});
Wygląda na to, że może działać, ale w rzeczywistości nie, require.config jestwewnątrz blok wymagania, jest ustawionypo jest już potrzebny.
WIĘC! Skończyłem tak dalekoto jako rozwiązanie:
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);
});
Co wydaje się okropne.
Tak więc, jasne jest, że w modułach, które zależą od siebie, tego typu rzeczy działają doskonale:
import $ = require('jquery');
export module blah {
...
}
Potrzebuję tylko właściwego sposobu ustawienia config requires na najwyższym poziomie, aby importowane ścieżki dla różnych nazwanych modułów były poprawne.
(... a to dlatego, że w dużej mierze zależności innych firm są rozwiązywane za pomocą bowera i instalowane w / lib / blah, gdzie jako pliki shim, które mam dla ich definicji, znajdują się w src / deps / blah.d.ts, więc domyślne ścieżki importu są niepoprawne po przeniesieniu wygenerowanych plików modułów do / js / na stronie)
NB. Wspomniałem tutaj o jquery, ale problem polega na tymnie ten jquery nie działa jako moduł AMD; Mam do tego plik shim jquery.ts.d. Problemem są tu ścieżki wymagające.