Perkecil alat yang dapat dieksekusi melalui terminal

35

Saya mencari alat atau cara untuk mengecilkan (mirip dengan Compress kode saya dan ini pertanyaan pada Stack) semua kode di saya .xml, .css, .htmldan .jsfile melalui Ubuntu terminal. Akhirnya saya akan melakukan proses bash script, tetapi pada saat ini saya ingin hanya menemukan sesuatu untuk diuji. Apakah ada alat di luar sana yang dapat saya gunakan untuk memampatkan semua format file ini melalui terminal?

DᴀʀᴛʜVᴀᴅᴇʀ
sumber
2
Sudahkah Anda mencoba sesuatu seperti tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
roadmr
1
Saya mencari untuk mengompres kode itu sendiri. Sesuatu seperti CSS Minify
DᴀʀᴛʜVᴀᴅᴇʀ
1
Maka saya pikir Anda tidak meminta kompresi . Dengan kompresi pada file biasa (non-media seperti musik / video) kami sebagian besar hanya mempertimbangkan kompresi lossless, tetapi Anda sedang mencari cara untuk meminimalkan spasi putih (di mana Anda kehilangan data ini). Dan karena minifying adalah lossy, Anda tidak dapat mendekompres (karena itu tidak dapat dibalik). Bagi saya ini membuatnya "tidak jelas apa yang Anda minta".
gertvdijk

Jawaban:

43

Ini bukan pilihan terbaik tetapi mungkin yang paling mudah. Kompresor YUI telah lama dianggap sebagai kompresor terbaik untuk Javascript dan CSS, menawarkan peningkatan 20-40% dari minifiers lainnya.

Sejak itu telah digantikan oleh proyek-proyek yang lebih baru seperti Uglify.JS (yang mungkin akan disarankan Grunt) tetapi masih cukup mudah untuk bangkit dan berjalan di Ubuntu.

sudo apt-get install yui-compressor

Itu dia. Sekarang Anda dapat menjalankan yui-compressor myfile.jsdan itu akan melakukan keajaibannya, tidak juga, atau semudah menginstal Node / Grunt / Uglify + YUI stack dengan benar.

Oli
sumber
15
Tidak semua orang yang menggunakan js atau css menggunakan node.js atau melakukan proyek node.js. Ini merupakan kerangka kerja lain untuk dipelajari dan dikonfigurasikan jika Anda ingin menggunakan gerutuan. Ya mendengus itu keren. Tetapi sekarang-a-hari, kita sudah memiliki cukup untuk belajar sebelum kita bahkan dapat memulai pengkodean. Jadi simpul / mendengus tidak selalu nyaman. :) Saya sendiri akan mencoba saran Anda tentang yui-compressor.
Bill Rosmus
2
@BillR Saya agak setuju dengan sentimen tetapi sementara saya tidak punya proyek node.js, saya masih menggunakan hal-hal seperti lessc dan uglify.js karena mereka adalah alat terbaik untuk pekerjaan itu . Saya tidak menggunakan Grunt karena saya sudah menggantinya dengan alat saya sendiri tetapi untuk pekerjaan yang sebenarnya, saya tidak akan pernah pincang diri hanya untuk menghindari Node. Jika Anda ingin tetap di industri ini, Anda harus mengikuti praktik terbaik.
Oli
Anda membuat asumsi bahwa menggunakan simpul adalah praktik terbaik. Mungkin di dunia Anda yang bukan dunia semua orang.
Bill Rosmus
2
Anda punya waktu lima tahun untuk saya tetapi saya tidak tahu apa maksud Anda ... Apakah Anda masih menggunakan HTML4 statis dengan sedikit "DHTML" dan skrip perl CGI? Masih menggunakan ASP? Atau sudahkah Anda beralih hal-hal sebagai teknologi yang lebih baik telah tersedia sendiri? Kami memiliki dua poin terpisah yang terjadi dalam hal ini; semakin konyol. Saya tidak peduli jika Anda tidak suka pelatihan ulang, tapi saya peduli Anda tahu bahwa menggunakan more-csspaket NPM untuk mengurangi CSS Anda lebih mengganggu daripada menggunakan yui-compressor. Bukan itu. Itu hanyalah perintah lain yang melakukan hal yang sama dengan lebih baik.
Oli
1
Perhatikan bahwa dengan instalasi ini Anda juga akan menginstal openjkd, suatu hal yang tidak diinginkan seseorang dalam sistem.
reallynice
12

Anda dapat memperkecil js dengan mudah dengan simpul dan uglify-js dari baris perintah:

  • instal uglify-js dengan npm install uglify-js -g

  • menjalankannya uglifyjs app-test.js > app-test.min.js


Untuk css saya sarankan clean-css (mungkin minifier css paling stabil di npm)
contoh penggunaan:

cleancss -o public-min.css public.css

Sejauh menyangkut html biasanya minifikasi biasanya tidak sepadan dengan waktu yang Anda investasikan untuk menyiapkannya, tapi saya sudah mencoba html-minifier dan ini adalah alat yang luar biasa.

Apa pun yang Anda lakukan, pastikan Anda mendapatkan apa yang Anda sajikan.

pengguna2417031
sumber
1
uglify dapat langsung diinstal dengansudo apt-get install node-uglify
Gery
Perhatikan bahwa uglify-js hanya untuk Javascript, dan bukan untuk css atau file lainnya.
Jose Gómez
2
@Gery Jika Anda ingin menginstal uglifydengan aptAnda juga perlu menginstal node-legacy, jadi jalankansudo apt install node-uglify node-legacy
mxdsp
Perhatikan bahwa cleancssalat CLI sekarang ada dalam clean-css-clipaket.
jbg
7

Gunakan minify - tidak seperti saran lainnya, alat ini memperkecil lebih banyak tipe file:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml
Dennis
sumber
Itu pekerjaan yang sangat buruk dengan javascript.
Federico
2

Tidak ada alasan untuk memperkecil file php (kecuali Anda memiliki ruang disk yang sangat terbatas dan ingin menggunakan setiap bitnya).

Jika Anda dapat menambahkan tujuan (Apa yang ingin Anda capai dan mengapa?), Seseorang mungkin menunjukkan kepada Anda cara yang lebih baik.

File JS dan CSS diperkecil saat runtime dan di-cache di sebagian besar proyek web. Ada minify ( https://github.com/mrclay/minify ), sebuah "pustaka" php yang dapat melakukan hal ini dengan tepat. (dapat juga dieksekusi dengan php dari terminal)

Namun perlu diingat bahwa satu file javascript besar tidak perlu dimuat lebih cepat dari 5 file kecil. Jika Anda membutuhkan alasan dan solusi untuk pernyataan ini, lihat di http://headjs.com/

Semoga sumbernya bersamamu ...

mondjunge
sumber
1

Saya akan merekomendasikan menggunakan Grunt.js . Ini adalah alat otomatisasi yang memiliki minifiers tersedia sebagai plugin dan dapat dijalankan di terminal Anda melalui Node.js. Seharusnya tidak perlu untuk memperkecil PHP karena kode dijalankan di sisi server dan hanya output HTML yang dikirim ke klien.

Anda dapat menemukan plugin yang tersedia di sini

konapun
sumber
2
Sadarilah bahwa memilih Grunt menyiratkan kurva belajar.
Rick-777
1

Saya memiliki hasil yang baik dengan Closure Compiler .

Closure Compiler adalah alat untuk membuat unduhan JavaScript dan berjalan lebih cepat. Alih-alih mengkompilasi dari bahasa sumber ke kode mesin, ini mengkompilasi dari JavaScript ke JavaScript yang lebih baik. Ini mem-parsing JavaScript Anda, menganalisisnya, menghapus kode mati dan menulis ulang dan meminimalkan apa yang tersisa. Ini juga memeriksa sintaks, referensi variabel, dan jenis, dan memperingatkan tentang perangkap JavaScript umum.

Ini dikembangkan oleh Google dan ditulis dalam Java. Dikemas untuk sistem berbasis Debian closure-compilerdan mudah diinstal pada sistem Ubuntu. Karena tidak menggunakan GUI, itu membutuhkan default-jre-headlesspaket yang lebih ringan .

Ini lebih lambat dari kompresor YUI tetapi ukuran file yang dihasilkan (sedikit) lebih kecil. Ini juga mencetak pesan peringatan yang berguna, mirip dengan kompiler untuk bahasa pemrograman lain.

Dokumentasi: Memulai

Pemakaian:

closure-compiler --js input.js --js_output_file output.js
Anthony G - keadilan untuk Monica
sumber
Penutupan sangat bagus jika Anda memulai proyek Anda dengan itu dan memperluas objek Anda dalam file terpisah, dll. Tetapi untuk proyek yang ada, itu agak mengerikan.
Alexis Wilke
-1

Pilihan lain adalah menggunakan npxperintah dari Node.js. npxmenjalankan perintah paket Node.js tanpa menginstalnya secara eksplisit.

# Minify JS
npx -p uglify-js uglifyjs -o app.min.js app.js common.js

# Minify CSS
npx clean-css-cli -o style.min.css css/bootstrap.css style.css

# Minify HTML
npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace

# XML
npx pretty-data-cli --type xml --minify input.xml > input.min.xml
Ninh Pham
sumber