CSS dan Javascript Compressor

Untuk menggunakan script compressor dari esoftplay (https://github.com/esoftplay/compressor) adalah dengan menginstall NPM terlebih dahulu. Kemudian anda buka file readme.md untuk melihat penjelasan yang lebih detail mengenai penggunaan compressor ini.

Setelah semua siap, yang anda perlukan adalah membuat file config.js pada template atau module buatan anda untuk meng-index kan file2 apa saja yang akan anda compress serta menentukan dimana hasil compress tersebut akan tersimpan, Anda juga bisa melihat contoh file config.js di sini atau pada file readme.md di compressor ini

Jika file config anda sudah siap, sesuai yang telah di contohkan, saatnya anda masuk ke folder tersebut menggunakan terminal command lalu memasukkan perintah pack atau anda bisa menambahkan option "-c" contoh: pack -c Dengan begitu ketika file config.js tersebut tersimpan diproject dalam repository, anda tetap bisa meneruskan pengembangan di lain hari dengan script asli anda, serta tidak kehilangan index file2 yang perlu di kompress (config.js)

Cara menggunakan perintah pack

Option-option yang tersedia

Mengenal file config.js

file config.js harus bernama "config.js" dan tidak boleh menggunakan nama lain agar tidak rancu kedepannya. File ini adalah file untuk menentukan pemetaan file-file mana saja yang akan dikompres sehingga anda bisa mengeksekusi dengan sekali perintah, contoh:
pack /var/www/html/master/templates/admin/bootstrap/config/v3/config.js
adapun contoh isi dari file config.js ini adalah sebagai berikut
module.exports = {
	source: "/absolute/path/source/", // determine source path, without this key system will consider in the same directory where this file is placed
	dest: {
		path: __dirname + "/destination/", // determine the destination path if it's the same as the source then empty it or don't use this key
		css: "style.min.css", // specify the compressed filename of all css and scss then save the file in dest.path + "css/", default value is 'style.css'
		js: "script.min.js" // specify the compressed filename of js files then save the file in dest.path + "jss/", default value is 'script.js'
	},
	jscompress : 2, // 1=uglify, 2=packer (compression method)
	jsnocheck : 0, // 1=direct compress, 0=check before compress
	watch : 0, // 1=Watch for changes, 0=Exit after compress
	script: { // additional code to execute before or after execution [see below content for more information]
		code: "", // what script to execute
		file: ""  // filename to execute
	}
	css: [ // retrieve all css along with scss files to compress into one single file as name which is determine in dest.path+"css/"+dest.css
		"relatif/path/to/style1.css",
		"./relatif/path/to/style2.css", // you can also use ../../ to point which file you want to process
		"/absolute/path/to/style3.css"
	],
	scss: [ // retrieve all scss along with css files to compress into one single file as name which is determine in dest.path+"css/"+dest.css
		"relatif/path/to/style1.scss",
		"./relatif/path/to/style2.scss",
		"/absolute/path/to/style3.scss"
	],
	font: [ // retrieve all files to copy into dest.path+"fonts/"
		"relatif/path/to/fonts/*", // use single star like * to process file only
		"/absolute/path/to/fonts/**" // use double star like ** to process recursively
	],
	js: [ // retrieve all javascript files to compress into one single file as name which is determine in dest.path+"js/"+dest.js
		"relatif/path/to/script1.js",
		"./relatif/path/to/script2.js",
		"/absolute/path/to/script3.js"
	],
	copy: { // collect all files to copy or compress
		"css": [ // these files will be placed in dest.path+"css/"
			"relatifORabsolute/path/to/style.css", // copy as the same name
			{ // example how to copy and compress the file as different filename $destination_file : $source_file
				"style.min.css": "relatifORabsolute/path/to/style.css",
			}
		],
		"js": [ // these files will be placed in dest.path+"js/"
			"relatifORabsolute/path/to/script.js", // copy as the same name
			{ // example how to copy and compress the file as different filename $destination_file : $source_file
				"script.min.js": "relatifORabsolute/path/to/script.js"
			}
		],
		"img": [ // copy these files without any compression method and place them in dest.path+"img/"
			"relatif/path/to/img.jpg",// copy a single file
			"./relatif/path/to/*", 		// use single star like * to process file only
			"/absolute/path/to/**",		// use double star like ** to process recursively
			{ // example how to copy file as different filename $destination_file : $source_file
				"othername.jpg": "relatifORabsolute/path/to/anyname.jpg"
			}
		]
		// , "anyfoldername":[... same as above ...]
	}
}

 Script tambahan yang bisa dieksekusi

Anda bisa menambahkan script tambahan yang akan dieksekusi setelah proses packing selesai dengan cara manmbahkan satu lagi key script pada config.js lihat contoh di bawah
module.exports = {
	script: {
		code: "ls -al",
		file: "../testscript.js"
	},
	// source: "/absolute/path/source/",
	// dest: {
	// 	path: "/absolute/path/destination/",
	// 	css: "style.min.css",
	// 	js: "script.min.js"
	// },
	// jscompress: 2,
	// watch: 0,
	// css: [],
	// scss: [],
	// font: [],
	// js: [],
	// copy: {}
}

Untuk menentukan apakah script itu dieksekusi sebelum compiler dijalankan maka
script: {
	"before": {
		"code": "ls -al",
		"file": "testscript.sh"
	}
}

Dan jika anda ingin menentukan script yang ingin dieksekusi baik sebelum compiler dijalankan dan sesudah compiler selesai, anda bias memasukkan key sebagai berikut
script: {
	"before": {
		"code": "ls -al",
		"file": "testscript.php"
	},
	"after": {
		"code": "ls -al",
		"file": "testscript.js"
	},
}
Jika anda perhatikan penggunaan key file ada contoh menggunakan .js, .php ataupun .sh hal ini dikarenakan eksekusi file tersebut mengikuti format dari file yang dieksekusi. Jadi semisal anda memasukkan file .php maka pada prakteknya dalam bash akan dieksekusi php `config.script.file` begitu juga jika file .js akan menjadi node `config.script.file` atau file .sh akan menjadi sh `config.script.file`. Dan apabila file yang dieksekusi tidak memiliki format ekstensi maka file tersebut akan dieksekusi secara langsung, sehingga harus anda pastikan permission dari file tersebut executable.

Sayangnya fitur ini hanya berlaku untuk system *nix seperti linux, MacOS, BSD dll. untuk windows belum kami test

Tags : Miscellaneous

0 Komentar

Berikan komentar anda