É possível pular módulos nomeados embutidos com compilação r.js?
-
21-12-2019 - |
Pergunta
Na minha aplicação, tenho um módulo nomeado definido in-line em index.html:
<script>
define('config', {
mode: '...',
environment: '...',
apiUrl: '...',
rootPath: '...',
baseImageUrl: '...'
});
</script>
Preciso definir isso em minha página da web porque extraio algumas coisas usando variáveis de ambiente.Então, nos meus módulos, posso incluir 'config':
define(['config', 'jquery'], function(config, $) { ... });
Quando executo uma compilação do RequireJS usando Grunt (com grunhido-exige, que usa r.js), está reclamando que não está encontrando o config.js.Minha configuração de compilação é assim:
{
baseUrl: 'js',
main: 'app/Main',
dir: 'js/build',
out: null,
modules: { ... },
paths: { ... },
shim: { ... }
}
Quando eu construo, recebo:
Error: Error: ENOENT, no such file or directory '/projects/projectname/js/build/config.js
Como posso permitir o uso de módulos nomeados e definidos em linha em conjunto com uma compilação r.js?
Solução
Contexto
paths: {
config : 'empty:'
}
em seu arquivo de configuração de compilação deve excluir este módulo do processo de otimização e, como resultado, parar de gerar esse erro.
Mas esta é uma maneira um pouco complicada, porque esta opção é comumente usada para excluir dependências de terceiros (por exemplo, ao desenvolver alguma biblioteca js baseada em Backbone, seria melhor separar sua lib do Backbone)