tl; dr: Jak zachować wtyczkę text.js z mojego zoptymalizowanego pliku, gdy wszystkie zależności tekstowe są włączone?W jaki sposób można zapobiec optymalizowaniu przez Require.js optymalizatora plików wtyczek tekstowych?
Używam Require.js optimizer (przez węzeł) do optymalizacji niektórych plików JS w moim projekcie. Używam text plugin do ładowania zależności tekstowych (szablony HTML, CSS). Mam moduł Chcę optymalizacji, w tym jego zależności, na przykład:
define(['text!core/core.css'], function(styles) {
// do setup stuff, return an object
});
W Require.js docs powiedzieć, że plik core/core.css
będą wstawiane kiedy uruchomić r.js
Optimizer, który jestem powołując tak:
$ r.js -o baseUrl=./src name=core out=release/test.js
Tracing dependencies for: core
Uglifying file: c:/path/release/test.js
c:/path/release/test.js
----------------
c:/path/src/text.js
text!core/core.css
c:/path/src/core.js
Dobra wiadomość jest taka, że to działa. Kiedy patrzę na zoptymalizowanego pliku, widzę inlined tekst, coś takiego:
define("text!core/core.css",[],function(){return"some CSS text"}),
define("core",["text!core/core.css"],function(a){ ... })
Złą wiadomością jest to, że wtyczka text.js jest również - dodaje o 3K, i składa się z (jak o ile mogę to stwierdzić) teraz całkowicie niepotrzebny kod do ładowania zewnętrznych plików tekstowych. Wiem, że 3K to niewiele, ale staram się, aby mój kod był wysoce zoptymalizowany i o ile rozumiem, kod dla wtyczki tekstowej nie jest wcale konieczny, jeśli moje zależności tekstowe są wbudowane. Mogę zachować wtyczkę do tekstu, dodając exclude=text
do mojego połączenia , ale jeśli to zrobię, pojawia się błąd, gdy próbuję użyć zoptymalizowanego kodu w przeglądarce, mówiąc, że wtyczka text.js nie mogła zostać załadowana.
Więc:
Czy jest jakiś powód plugin text.js jest faktycznie wymagane tutaj?
Jeśli nie, to istnieje opcja konfiguracja dla
r.js
które mogą rozwiązać ten problem, alboCzy istnieje łatwy podkładka dla text.js plugin, że mogę to przekonać Wymagaj. js, że niepotrzebna wtyczka jest załadowana?
OK, dziękuję - spróbuję tego.Zasadniczo odpowiedzią jest (3) wykonanie podkładki, którą mogę opracować w moim procesie kompilacji. – nrabinowitz
Dla potomności - zrobiłem shim w następujący sposób: 'define (" text ", {load: function() {}});' i dołączono go do początku mojego zoptymalizowanego pliku. Wydaje się działać dobrze – nrabinowitz
Zastanawiam się, to samo. 'stubModules: ['text']' robi sztuczkę w nowszych wersjach RequireJS. – superlukas