@EDIT: postei meu problema no GitHub juntamente à um projeto que exemplifica exatamente o meu caso, e também detalhei melhor o problema la.: https://github.com/aldo-jr/teste-versionamento
Olá, boa tarde.
Estou com um problema com a arquitetura do meu projeto para rodar as tasks. Primeiro irei mostrar como está a organização do meu projeto:
Meu Projeto
|
+ Public
| +- app01
| +- index.html
| +- app02
| +- index.html
| +- css
| +- style.min.css
| +- custom.min.css
| +- etc.min.css
| +- js
| +- lib
| +- scripts.main.js
| +- lib.js
| +- angular.min.js
| +- index.html
Certo, está é a organização de meu projeto, são 2 aplicações em angular. e os arquivos css's, e js's que são compartilhados em ambas as aplicações ficam fora da pasta do app mas dentro da pasta public do meu projeto.
agora simulando que estou em meu index.html de meu "app01" estou usando os comentarios do usemin com as minhas chamadas dos scripts da seguinte maneira:
<!-- build:js /js/libs-app.bundle.min.js -->
<script src="../js/lib/scripts.main.js"></script>
<script src="../js/lib/lib.js"></script>
<script src="../js/lib/angular.min.js"></script>
<!-- endbuild -->
Minha dúvida já começa aqui, se eu usar o comentario com o caminho ../js/...., o é criado uma pasta js FORA da pasta "dist", na raiz geral do meu projeto. e passando /js/... como está sendo feito, é criado certo, até ai tudo bem.
mas o problema é na hora de usar o versionamento, como o caminho do arquivo fica "/js/libs-app.bundle.min.js" ele não encontra o arquivo, creio eu que ele tente procurar em "Meu Projeto/js/libs-app.bundle.min.js" e não encontra, em vez de procurar em "dist/....."
e exatamente o mesmo problema que estou tendo com os scripts (js) estou tendo com as folhas de estilo (css)
o versionamento dos arquivos da index.html da raiz do public funciona:
<!-- build:css css/login.bundle.min.css -->
<link rel="stylesheet" href="css/style.min.css">
<link rel="stylesheet" href="css/custom.min.css">
<link rel="stylesheet" href="css/etc.min.css">
<!-- endbuild -->
<!-- build:js js/libs-login.bundle.min.js -->
<script src="js/lib/script.main.js"></script>
<script src="js/lib/lib.js"></script>
<script src="js/lib/angular.min.js"></script>
<!-- endbuild -->
Para esta index, eu crio outros arquivos bundle, e eles são criados, minificados e versionados corretamente, o resultado após rodar as tasks é o seguinte:
<link rel="stylesheet" href="css/494e5e6b.login.bundle.min.css">
<script src="js/ffc5529b.libs-login.bundle.min.js"></script>
Segue meu initConfig do grunt:
grunt.initConfig({
copy: {
public: {
expand: true,
cwd: 'public',
src: '**',
dest: 'dist'
}
},
clean: {
dist: {
src: ['dist']
}
},
useminPrepare: {
html: 'dist/**/*.html'
},
usemin: {
html: 'dist/**/*.html'
},
imagemin: {
public: {
expand: true,
cwd: 'public/images',
src: '**/*.{png,jpg,gif}',
dest: 'dist/images'
}
},
rev: {
options: {
encoding: 'utf8',
algorithm: 'md5',
length: 8
},
imagens: {
src: ['dist/images/**/*.{png,jpg,gif}']
},
minificados: {
src: ['dist/**/*.bundle.min.js', 'dist/**/*.bundle.min.css']
}
}
});
Caso alguém consiga achar onde estou errando e como poderia fazer para funcionar sem alterar a arquitetura do meu projeto, agradeceria muito!
Obrigado! :)