码迷,mamicode.com
首页 > Web开发 > 详细

gulp,grunt,webpack 菜鸟整理

时间:2016-04-19 00:01:06      阅读:900      评论:0      收藏:0      [点我收藏+]

标签:

首先准确说把webpack放在这儿不太好,因为webpack准确说更有点类似require,sea这类的模块化工具;而前两者更偏向于压缩混淆之类;

三者下载npm包之后,都需要各自的config文件;

grunt的congfig文件书写格式是键值,类似一种配置的编写,gulp是回掉函数,类似编程的编写;wepack的配置书写类似一种common规范;

直接代码示例:

grunt
module.exports = function (grunt) {    require("load-grunt-tasks")(grunt)//这个包是加载所有所需任务,就是不需要再一个一个require    
var config={ register:"public/src/register", lib:"public/lib", src:"public/src", index:"public/src/index", dest:"dist", html:"html", css:"public/css/sass/stylesheets" }//设置路径 grunt.initConfig({ config:config, pkg: grunt.file.readJSON(‘package.json‘),//这个告诉grunt吧packjson里的数据保存到pkg这个变量然后方便读取,其实这个可有可无 uglify: {//代码混淆任务 options: { banner: ‘/*! <%= pkg.file %> <%= grunt.template.today("yyyy-mm-dd") %> */\n‘ }, build: { files:{ ‘<%=config.lib%>/test.min.js‘:[‘<%=config.dest%>/test2.js‘] } } }, jshint:{//这个是让grunt自动对所书写的js进行把关 files: [‘router/*.js‘], options: { curly:true, browser: true, latedef:true, unused:true, undef:true, devel: true, node:true, jquery:true } }, cssmin:{//这个是压缩css的任务包 compress:{ files:{ ‘<%=config.css%>/index.min.css‘: ‘<%=config.css%>/index.css‘ } } }, concat:{//这个是吧文件合并的包 options: { separator: ‘;‘ }, dist: { src: [‘<%=config.src%>/index/controller/*.js‘ ], dest: ‘<%=config.dest%>/ngconfig.js‘ } }, copy:{//文件复制 dist:{ files:[{ flatten: true, filter: ‘isFile‘, expand: true, src:‘<%=config.css%>/*.css‘, dest:‘css/mycss/‘ }] } }, clean:{//文件清除 dist:{ src:"css/mycss/*" } } }); grunt.registerTask(‘default‘, [‘concat‘,‘uglify‘]);注册默认任务为先合并在混淆,注意组合任务可以继续组合
}

下面gulp配置文件示例

var gulp = require(‘gulp‘);
var htmlmin = require(‘gulp-htmlmin‘);
var cssmin= require(‘gulp-minify-css‘),imagemin = require(‘gulp-imagemin‘),clean=require(‘gulp-clean‘),
    sass = require(‘gulp-ruby-sass‘);

gulp.task(‘minify‘, function() {//gulp的思路有个流的概念,类似出发点-过程-目的地这样的概念,任务名字呢可以随意
    gulp.src(‘test.html‘)//这是html压缩任务
        .pipe(htmlmin({collapseWhitespace: true}))
        .pipe(gulp.dest(‘dist‘))
});
gulp.task(‘a‘, function () {//这是图片压缩任务
    gulp.src(‘public/img/*.{png,jpg,gif,ico}‘)
        .pipe(imagemin())
        .pipe(gulp.dest(‘dist/img‘));
});
gulp.task(‘testCssmin‘, function () {//这是css压缩任务
    gulp.src(‘public/css/sass/stylesheets/index/index/*.css‘)
        .pipe(cssmin({
        advanced: false,
        keepBreaks: false

        }))
        .pipe(gulp.dest(‘dist/index.min.css‘));
});
gulp.task(‘sass‘, function () {
    return sass(‘public/css/sass/sass/*.scss‘)
        .on(‘error‘, function (err) {
            console.error(‘Error!‘, err.message);
        })
        .pipe(gulp.dest(‘dist/‘));
});
gulp.task(‘watch‘, function () {//这是监听文件变化任务
    console.log(‘继续压死你!‘)
    gulp.watch(‘src/*.html‘, [‘minify‘]);
});
gulp.task("clean",function(){//这个清除任务
    gulp.src("dist/img").pipe(clean())
})
gulp.task(‘build‘,[‘testCssmin‘,‘a‘])//这是自己新建一个任务,然后依次按照dev里面的顺序进行

  webpack的配置代码

var webpack = require(‘webpack‘);
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin(‘common.js‘);

module.exports = {
    //插件项
    plugins: [commonsPlugin],
    //页面入口文件配置
    entry: {
        index : ‘./src/js/page/index.js‘
    },
    //入口文件输出配置
    output: {
        path: ‘dist/js/page‘,
        filename: ‘[name].js‘
    },
    module: {
        //加载器配置
        loaders: [
            { test: /\.css$/, loader: ‘style-loader!css-loader‘ },
            { test: /\.js$/, loader: ‘jsx-loader?harmony‘ },
            { test: /\.scss$/, loader: ‘style!css!sass?sourceMap‘},
            { test: /\.(png|jpg)$/, loader: ‘url-loader?limit=8192‘}
        ]
    },
    //其它解决方案配置
    resolve: {
        root: ‘E:/github/flux-example/src‘, //绝对路径
        extensions: [‘‘, ‘.js‘, ‘.json‘, ‘.scss‘],
        alias: {
            AppStore : ‘js/stores/AppStores.js‘,
            ActionType : ‘js/actions/ActionType.js‘,
            AppAction : ‘js/actions/AppAction.js‘
        }
    }
};

  

 

gulp,grunt,webpack 菜鸟整理

标签:

原文地址:http://www.cnblogs.com/lyz1991/p/5406141.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!