Comment puis-je renommer les fichiers avec Grunt, sur la base du fichier nom du dossier parent?
J'ai a la structure suivante:
src/
modules/
module1/
js/
main.js
scss/
main.scss
index.html
module2/
js/
main.js
scss/
main.scss
index.html
Je voudrais un grognement tâche de copie de ces à la structure suivante:
dev/
js/
module1.js
module2.js
css/
module1.css
module2.css
module1.html
module2.html
Est-il un moyen de le faire avec un plugin grunt? Si non, comment pourrais-je y parvenir?
Vous devez vous connecter pour publier un commentaire.
Cela peut être fait à l'aide de la grunt-contrib-copie plugin.
La principale chose à noter est que vous pouvez changer la destination par programmation à l'aide d'une fonction renommer (qui prend dans la destination et la source de chaque fichier).
Voici une (un peu fragile) de l'échantillon
Gruntfile.js
qui devrait copie de votre structure souhaitée:return dest+'/'+src
- ce qui va provoquer le fichier à copier à l'emplacement par défaut.'/tmp/'+dest+'/'+src
. En négligeant de les renvoyer une valeur de larename
fonction provoque une erreur.Il n'y a pas besoin d'utiliser
grunt-contrib-copy
juste pour cela une fois de plus, vous pouvez maintenant profiter degrunt.file.expandMapping
qui a des options de simplement changer l'extension du fichier, ou de définir une fonction qui renvoie le nom de fichier de sortie.Voici un exemple d'un
files
objet dans unjade
tâche de la compilation .jade modèles dans .les fichiers html:Il aurait été plus facile d'utiliser le
ext: '.html'
option au lieu de larename
option dans ce cas, mais je suis en utilisantrename
ici, donc vous pouvez voir comment cela fonctionne.Plus d'infos sur le
ext
etrename
(et d'autres) options dans le grunt.fichier docs. Quelques exemples de plus ici et ici.Vous pouvez simplement utiliser les options:
développez : true,
aplatir: vrai
Pas besoin de coutume renommer les rappels.
Pas exactement la réponse à votre question mais je l'ai fait ici à la recherche d' relative dest dossiers avec grunt donc... Voici comment je l'ai résolu
Ce peu
path.join(expand.cwd, src.dir, dest, src.base);
juste de créer le chemin que j'ai besoin.expand.cwd = app/design/frontend/
src.dir = <DYNAMIC_FOLDERS>/Magento_Sales/email-src/
dest = ../../Magento_Sales/email/
src.base = <FILE>.html
et tous ensemble, c' =
app/design/frontend/<COMPANY>/<MAIN-THEME>/Magento_Sales/email/<FILE>.html
et dans ma situation, il sera désormais compiler mes e-mails html relative dossiers de destination
si tu veux renommer .café de fichiers .js ou similaire, puis il suffit de l'adapter 😉
sudo npm install grunt-contrib-copie