标签:
首先准确说把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‘ } } };
标签:
原文地址:http://www.cnblogs.com/lyz1991/p/5406141.html