2013-04-07 16 views
11

Eksperymentowałem z Gruntem i wymagałem JS dziś po południu. Jestem wielkim fanem modułu text i używam go do wprowadzania szablonów. W projektach nie opartych na programie Grunt użyłem opcji inlineText i stubModules Wymagaj opcji JS do wstawiania plików szablonów i działa to świetnie. Jednak mam problem z tym, żeby to działało z Gruntem.Inlining tekst require.js! używając Grunta

wymagać Konfig

require.config({ 
    paths: { 
     // Using Bower for dependency management 
     text: '../components/requirejs-text/text' 
    } 
}); 

wykorzystania

define(['text!template.html'], function (html) { 
    // Do stuff with html 
}); 

Gruntfile.js

requirejs: { 
    dist: { 
     options: { 
      baseUrl: 'app/scripts', 
      optimize: 'none', 
      preserveLicenseComments: false, 
      useStrict: true, 
      wrap: true, 
      inlineText: true, 
      stubModules: ['text'] 
     } 
    } 
} 

Po uruchomieniu grunt uzyskać różne błędy w konsoli:

  • Plik nie znaleziono na /dist/components/requirejs-text/text.js
  • A Load timeout for modules: text!template.html_unnormalized2

następnie dwie kwestie:

  • To nie wydaje się być inline (a następnie odgałęzienie) text.js kod
  • To nie wydaje się być inlineing template.html plik

Jakieś pomysły, dlaczego to nie działa?

+0

Co twoja struktura folderów wygląda? Czy twój 'text.js' jest w katalogu 'dist', kiedy to zostanie wykonane? –

+0

Otrzymuję ten sam problem. Dla mnie wygląda na to, że narzędzie do budowania szuka text.js, ponieważ słowo "text" pojawia się w zależności ['text! Template.html']. Używam też wtyczki wymagającego tekstu. –

+0

Które pliki wymagają biblioteki require.js do pomruczania, ponieważ jest ich kilka? – ghost23

Odpowiedz

1

Widzisz błąd, ponieważ musisz wskazać na r.js, gdzie znajduje się moduł text.

Można to zrobić poprzez dodanie konfigurację ścieżek:

requirejs: { 
    dist: { 
     options: { 
      baseUrl: 'app/scripts', 
      optimize: 'none', 
      preserveLicenseComments: false, 
      useStrict: true, 
      wrap: true, 
      inlineText: true, 
      stubModules: ['text'], 
      paths: { 
      'text': 'libs/text' // relative to baseUrl 
      } 
     } 
    } 
} 

Następnie trzeba pobrać moduł text.js do odpowiedniego katalogu.

Ale dlaczego Twój require.config nie działa?

Ponieważ r.js musi ocenić konfigurację w pewnym momencie. Nie wspominając już w odpowiedzi na pytanie, gdzie jest Twój require.config, ale w przypadku, gdy chcesz go ocenić trzeba wskazać, gdzie jest r.js (patrz https://github.com/jrburke/r.js/blob/master/build/example.build.js#L35):

requirejs: { 
    dist: { 
     options: { 
      baseUrl: 'app/scripts', 
      optimize: 'none', 
      preserveLicenseComments: false, 
      useStrict: true, 
      wrap: true, 
      inlineText: true, 
      stubModules: ['text'], 
      mainConfigFile: '../config.js' // here is your require.config 

      // Optionally you can use paths to override the configuration 
      paths: { 
      'text': 'libs/text' // relative to baseUrl 
      } 
     } 
    } 
} 
Powiązane problemy