Catatan: Pertanyaan ini hanya relevan untuk Grunt 0.3.x dan telah ditinggalkan untuk referensi. Untuk bantuan dengan rilis Grunt 1.x terbaru, silakan lihat komentar saya di bawah pertanyaan ini.
Saat ini saya mencoba menggunakan Grunt.js untuk menyiapkan proses pembuatan otomatis untuk penggabungan pertama dan kemudian mengecilkan file CSS dan JavaScript.
Saya berhasil menggabungkan dan mengecilkan file JavaScript saya, meskipun setiap kali saya menjalankan grunt sepertinya hanya menambahkan ke file daripada menimpanya.
Adapun untuk mengecilkan atau bahkan menggabungkan CSS, saya belum dapat melakukan ini!
Dalam hal modul CSS grunt saya telah mencoba menggunakan consolidate-css
, grunt-css
& cssmin
tetapi tidak berhasil. Tidak bisa memikirkan cara menggunakannya!
Struktur direktori saya adalah sebagai berikut (menjadi aplikasi node.js yang khas):
- app.js
- grunt.js
- /public/index.html
- / public / css / [berbagai file css]
- / public / js / [berbagai file javascript]
Inilah file grunt.js saya saat ini di folder root aplikasi saya:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: '<json:package.json>',
concat: {
dist: {
src: 'public/js/*.js',
dest: 'public/js/concat.js'
}
},
min: {
dist: {
src: 'public/js/concat.js',
dest: 'public/js/concat.min.js'
}
},
jshint: {
options: {
curly: true,
eqeqeq: true,
immed: true,
latedef: true,
newcap: true,
noarg: true,
sub: true,
undef: true,
boss: true,
eqnull: true,
node: true
},
globals: {
exports: true,
module: false
}
},
uglify: {}
});
// Default task.
grunt.registerTask('default', 'concat min');
};
Jadi untuk meringkas, saya butuh bantuan dengan dua pertanyaan:
- Misalnya, bagaimana menggabungkan dan mengecilkan semua file css saya di bawah folder
/public/css/
menjadi satu filemain.min.css
- Mengapa grunt.js terus menambahkan ke file javascript yang digabungkan dan dikecilkan
concat.js
dan diconcat.min.js
bawah/public/js/
alih-alih menimpanya setiap kali perintahgrunt
dijalankan?
Diperbarui 5 Juli 2016 - Mengupgrade dari Grunt 0.3.x ke Grunt 0.4.x atau 1.x
Grunt.js
telah pindah ke struktur baru di Grunt 0.4.x
(file sekarang disebut Gruntfile.js
). Silakan lihat proyek open source saya Grunt.js Skeleton untuk bantuan dalam menyiapkan proses pembuatan untuk Grunt 1.x
.
Pindah dari Grunt 0.4.x
ke Grunt 1.x
seharusnya tidak menimbulkan banyak perubahan besar .
sumber
concat
dalamjs
folder yang sama , ia akan mengambilnya dan menambahkannya! Saya sudah mulai menggunakan cssmin dan itu berfungsi dengan baik! Terima kasih lagi.concat.min.css
danconcat.min.js
. Jika saya memodifikasi sesuatu, menjalankan ulang & menerapkan, orang tidak akan mendapatkan versi terbaru karena browser sudah menyimpannya dalam cache. Ada cara untuk menamai file secara acak dan menautkannya sesuai dengan tag<link>
dan yang benar<script>
?concat.min-<%= pkg.version %>.js
.dest
seperti inicssmin: { css:{ src: '<%= concat.css.dest %>', dest: './css/all.min.css'
}} `Ini adalah hasil dari operasiconcat -> css
Saya ingin menyebutkan di sini teknik yang sangat, SANGAT menarik yang digunakan dalam proyek besar seperti jQuery dan Modernizr untuk hal-hal yang digabungkan.
Kedua proyek ini sepenuhnya dikembangkan dengan modul requirejs (Anda dapat melihatnya di repo github mereka) dan kemudian mereka menggunakan pengoptimal requirejs sebagai penggabung yang sangat cerdas. Hal yang menarik adalah bahwa, seperti yang Anda lihat, atau jQuery baik Modernizr tidak membutuhkan requirejs untuk bekerja, dan ini terjadi karena mereka menghapus ritual syntatic requirejs untuk menghilangkan requirejs dalam kode mereka. Jadi mereka berakhir dengan pustaka mandiri yang dikembangkan dengan modul requirejs! Berkat ini, mereka dapat melakukan pengembangan cutom pustaka mereka, di antara keuntungan lainnya.
Untuk semua yang tertarik dengan penggabungan dengan pengoptimal requirejs, lihat posting ini
Juga ada alat kecil yang mengabstraksi semua boilerplate proses: AlbanilJS
sumber
Saya setuju dengan jawaban di atas. Tapi di sini ada cara lain untuk kompresi CSS.
Anda dapat menggabungkan CSS Anda dengan menggunakan kompresor YUI :
sumber
Anda tidak perlu menambahkan paket concat, Anda dapat melakukannya melalui cssmin seperti ini:
Dan untuk js, gunakan uglify seperti ini:
sumber
Saya pikir mungkin lebih otomatis, tugas kasar usemin berhati-hatilah untuk melakukan semua pekerjaan ini untuk Anda, hanya perlu beberapa konfigurasi:
https://stackoverflow.com/a/33481683/1897196
sumber