標籤:
package.js
{ "name": "ttd_v3", "version": "0.1.0", "author": "liujin", "devDependencies": { "connect-livereload": "^0.5.2", "grunt": "~0.4.2", "grunt-contrib-concat": "~0.3.0", "grunt-contrib-connect": "^0.7.1", "grunt-contrib-cssmin": "^0.11.0", "grunt-contrib-jshint": "~0.6.0", "grunt-contrib-sass": "~0.3.0", "grunt-contrib-uglify": "~0.3.2", "grunt-contrib-watch": "^0.6.1", "grunt-css": "~0.5.4", "grunt-sass": "0.6.1" }}
gruntfile.js
module.exports = function(grunt) { // LiveReload的預設連接埠號碼,你也可以改成你想要的連接埠號碼 var lrPort = 35729; // 使用connect-livereload模組,產生一個與LiveReload指令碼 // <script src="http://127.0.0.1:35729/livereload.js?snipver=1" type="text/javascript"></script> var lrSnippet = require(‘connect-livereload‘)({ port: lrPort }); // 使用 middleware(中介軟體),就必須關閉 LiveReload 的瀏覽器外掛程式 var lrMiddleware = function(connect, options) { return [ // 把指令碼,注入到靜態檔案中 lrSnippet, // 靜態檔案伺服器的路徑 connect.static(options.base), // 啟用瀏覽目錄(相當於IIS中的瀏覽目錄) connect.directory(options.base) ]; }; // 項目配置(任務配置) grunt.initConfig({ // 讀取我們的項目配置並儲存到pkg屬性中 pkg: grunt.file.readJSON(‘package.json‘), // 通過connect任務,建立一個靜態伺服器 connect: { options: { // 伺服器連接埠號碼 port: 8000, // 伺服器位址(可以使用主機名稱localhost,也能使用IP) hostname: ‘localhost‘, // 實體路徑(預設為. 即根目錄) 註:使用‘.‘或‘..‘為路徑的時,可能會返回403 Forbidden. 此時將該值改為相對路徑 如:/grunt/reloard。 base: ‘.‘ }, livereload: { options: { // 通過LiveReload指令碼,讓頁面重新載入。 middleware: lrMiddleware } } }, // 通過watch任務,來監聽檔案是否有更改 watch: { client: { // 我們不需要配置額外的任務,watch任務已經內建LiveReload瀏覽器重新整理的程式碼片段。 options: { livereload: lrPort }, // ‘**‘ 表示包含所有的子目錄 // ‘*‘ 表示包含所有的檔案 files: [‘html/*.html‘, ‘css/*.css‘, ‘js/*.js‘, ‘images/**/*‘] }, sass: { files: [‘sass/*.{scss,sass}‘,‘sass/*.{scss,sass}‘], tasks: [‘sass:dist‘] } }, concat : { webqq : { files : { ‘dist/js/test.js‘ : [‘js/a.js‘,‘js/b.js‘] } } }, uglify : { options: { banner: ‘/** \n * <%= pkg.name %> \n * author:<%= pkg.author %> \n * update:<%= new Date() %> \n**/\n‘ }, webqq : { files : { ‘dist/js/test.min.js‘ : [‘dist/js/test.js‘] } } }, cssmin: { options: { banner: ‘/** \n * <%= pkg.name %> \n * author:<%= pkg.author %> \n * update:<%= new Date() %> \n**/‘ }, cssmini: { files: { ‘dist/css/test.min.css‘: [‘css/test.css‘] // 壓縮 test.css檔案 } } }, sass: { dist: { files: { ‘dist/css/test.css‘: ‘sass/test.scss‘ } } } }); // grunt.initConfig配置完畢 // 監控html js css grunt.loadNpmTasks(‘grunt-contrib-connect‘); grunt.loadNpmTasks(‘grunt-contrib-watch‘); grunt.registerTask(‘live‘, [‘connect‘, ‘watch‘,‘concat‘,‘uglify‘]); //合并壓縮js grunt.loadNpmTasks(‘grunt-contrib-concat‘); //合并任務 grunt.loadNpmTasks(‘grunt-contrib-uglify‘); //js壓縮 grunt.registerTask(‘jsmini‘, [‘cssmin‘]); //壓縮css grunt.loadNpmTasks(‘grunt-css‘); grunt.registerTask(‘cssmini‘, [‘cssmin‘]); //編譯sass grunt.registerTask(‘sassmini‘, [‘sass:dist‘, ‘watch‘]); grunt.loadNpmTasks(‘grunt-sass‘); grunt.loadNpmTasks(‘grunt-contrib-watch‘);};
初探grunt.js