`
mutongwu
  • 浏览: 449813 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

grunt构建基于seajs的网站实现

阅读更多
Gruntfile.js

module.exports = function(grunt) {
	
  grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        //源码
        src: "asserts",

        //输出
        dist: "dist",
        
        transport: {
        	options: {
        		paths:["<%=src%>/sea-modules"],
        		alias: {
        		    "jquery": "lib/jquery.js"
        		}
    	    },
            modules: {
                files : [
                    {
                    	 cwd: '<%=src%>/sea-modules',
                    	 expand: true,
                         src: '**/*.js',
                         dest: '<%=dist%>/sea-modules'
                    }
                ]
            },
            dwstatic: {
            	options:{
            	},
                files : [
                    {
                    	 cwd: '<%=src%>',
                    	 expand: true,
                         src: 'dwstatic/**/*.js',
                         dest: '<%=dist%>'
                    }
                ]
            }
        },
        copy:{
        	moduleRes:{
        		files:[
        		       {expand: true, cwd: '<%=src%>/sea-modules/css', src:['**'],dest: '<%=dist%>/sea-modules/css'},
        		       {expand: true, cwd: '<%=src%>/sea-modules/img', src:['**'],dest: '<%=dist%>/sea-modules/img'}
				]
        	},
        	staticRes:{
        		files:[
        		       {expand: true, cwd: '<%=src%>/dwstatic/css', src:['**'],dest: '<%=dist%>/dwstatic/css'},
        		       {expand: true, cwd: '<%=src%>/dwstatic/images', src:['**'],dest: '<%=dist%>/dwstatic/images'}
				]
        	}
        },
        concat: {
        	//合并一个公用的基础js,并且利用 preload插件,让其前置加载。
            aio: {
            	options: {
            		paths:["<%=dist%>/sea-modules"],
            		include: "all"
        	    },
                files: {
                	"<%=dist%>/sea-modules/aio.js": ["<%=dist%>/sea-modules/aio.js"]
                }
            }
        },
        uglify:{
        	allJs:{
        		files:[{
    		       expand: true,
                   cwd: '<%=dist%>',
                   src: ['**/*.js', '!**/*-debug.js'],
                   dest: '<%=dist%>'
        		}]
        	}
        },
        cssmin: {
        	allCss: {
    		    expand: true,
    		    cwd: '<%=dist%>',
    		    src: ['**/*.css'],
    		    dest: '<%=dist%>'
    		}
        }
  });
  
  grunt.loadNpmTasks('grunt-contrib-copy');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-cmd-transport');
  grunt.loadNpmTasks('grunt-cmd-concat');

  grunt.registerTask('min', ['uglify','cssmin']);
  grunt.registerTask('default', ['transport', 'concat','copy','uglify','cssmin']);
  
};


页面调用:


<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Image preview example</title>
<link type="text/css" rel="stylesheet" href="asserts/sea-modules/css/common.css" />

<script id="seajsnode" src="http://shawn.yy.com:1234/www/seajsDemo/asserts/sea-debug.js"></script>
<script type="text/javascript" src="http://shawn.yy.com:1234/www/seajsDemo/asserts/seajs-css.js"></script>
<script type="text/javascript" src="http://shawn.yy.com:1234/www/seajsDemo/asserts/seajs-preload.js"></script>
<style>
pre{display:block;background:#000;color:green;padding:20px;font-weight:bold;}
</style>
</head>

<body>
<pre>
npm 安装的包:
npm install -g grunt-cli
npm install grunt --save-dev
npm install grunt-cmd-transport --save-dev
npm install grunt-cmd-concat --save-dev
npm install grunt-contrib-uglify --save-dev
npm install grunt-contrib-cssmin --save-dev

</pre>
<input id="pop" value="pop" type="button" class="greenbtn largebtn"/>
<script>
//静态服务器地址
var staticBase = "http://shawn.test.com:1234/www/seajsDemo/dist/";
if(location.search){
	staticBase = "/www/seajsDemo/asserts/"; //使用本地资源
}
seajs.config({
  preload:["aio"],
  base: staticBase + "sea-modules/",
  alias: {
    "jquery": "lib/jquery.js"
  },
  vars: {
    'locale': 'zh-CN' //国际化支持
  },
  paths:{
	  //dwstatic开头的模块,将被重新映射到具体的资源路径。
	  "dwstatic" : staticBase + "dwstatic"
  },
  map:[ [/^(.*\.(?:js|css))(.*)$/i, '$1?ver=20150615']]
});
</script>
<script>
	//【规范】:凡是dwstatic开头的资源,视为业务模块,要求放置在dwstatic目录下
	seajs.use("dwstatic/index");
	//seajs.use("dwstatic/index-debug")
</script>
</body>
</html>



工程目录:



代码:
  • 大小: 13.1 KB
分享到:
评论

相关推荐

    前端开源库-grunt-react-seajs

    "grunt-react-seajs"就是基于Grunt的插件,它的核心功能是将React组件转换为可由SeaJS加载的模块格式,这样,即便是在使用SeaJS的项目中,也能无缝集成React组件。 使用"grunt-react-seajs"的过程通常包括以下步骤...

    node+seajs+grunt标准资源

    本资源主要关注的是如何在Node.js环境下,结合Sea.js模块加载器和Grunt构建工具来优化前端项目的开发流程。 **Node.js** 是一个基于Chrome V8引擎的JavaScript运行环境,它提供了一个轻量级且高效的平台,用于开发...

    seajs-grunt:seajs+grunt的构建脚手架

    基于seajs的模块化方案,配合grunt构建配置 主要用到了grunt的grunt-cmd-transport、grunt-cmd-concat、grunt-contrib-uglify、grunt-contrib-copy 这几个模块,实现模块依赖分析,模块合并,代码压缩等功能 使用...

    前端开源库-grunt-react-seajs.zip

    Grunt,由Tom Dye创建,是一款基于Node.js的构建工具,它能够自动执行前端项目中的重复性任务,如编译Less或Sass,压缩JavaScript和CSS,合并文件等。Grunt的核心在于其配置文件`Gruntfile.js`,开发者可以根据项目...

    seajs_master.zip

    1. **模块化管理**:Seajs实现了CMD(Common Module Definition)规范,允许开发者在浏览器端定义、加载和使用模块。CMD与服务器端的CommonJS类似,但延迟执行和异步加载是其显著特点,适合浏览器环境。 2. **模块...

    前端开源库-grunt-cmd-package

    总结来说,`grunt-cmd-package` 是前端开发中一款实用的Grunt插件,它极大地简化了Seajs模块的合并工作,提升了项目构建的效率。而`grunt-cmd-combo-master` 则为开发者提供了深入研究和定制该插件的机会,帮助...

    前端开源库-grunt-cmd-transport-wnd

    `grunt-cmd-transport-wnd` 是一个专门用于前端构建的开源库,它基于 Grunt,一个强大的JavaScript任务运行器,旨在帮助开发者自动化执行各种重复性工作,如编译、测试、清理和部署等。`grunt-cmd-transport-wnd` 的...

    seajs-flbox

    "seajs-flbox"是一个基于Sea.js的前端框架或库,它可能是为了简化Web开发而设计的。Sea.js是一款流行的JavaScript模块加载器,它遵循CommonJS规范,使得在浏览器环境中可以实现模块化开发,便于管理和组织代码。Fl...

    前端开源库-grunt-cmd-transport-xd

    在前端项目中,Grunt-cmd-transport-xd作为一个Grunt插件,可以方便地集成到Grunt工作流中,帮助开发者实现JavaScript模块的转换,确保代码在浏览器中的正确运行。 该插件的核心工作原理是解析JavaScript源文件中的...

    基于gulp合并压缩Seajs模块的方式说明

    之前的项目一直采用grunt来构建,然后用requirejs做模块化,requirejs官方有提供grunt的插件来做压缩合并。现在的项目切到了gulp,模块化用起了seajs,自然而然地也想到了模块合并压缩的问题。 然后一开始在解决这个...

    sea.js的资料,还有node安装包

    2. **构建工具**:在 Node.js 环境下,可以利用 Gulp、Grunt 或 Webpack 等构建工具,结合 Sea.js 的构建插件(如 seajs-combo,seajs-env 等),进行自动化构建流程,包括模块合并、压缩、环境适配等。 3. **模块...

    web前端零基础系统学习路线分享.docx

    了解 Yeoman 脚手架、NPM/Bower等依赖管理工具,以及Grunt/Gulp/Webpack构建工具。 **第八阶段:HTML5原生移动应用开发** 学习Cordova和PhoneGap用于混合应用开发,了解Ionic框架结合Angular构建APP,以及React ...

    大前端学习流程

    * 面向组件编程:面向组件编程的方式、面向组件编程的实现原理、面向组件编程实战、基于组件化思想开发网站应用程序 * 面向模块编程:AMD设计规范、CMD设计规范、RequireJS、LoadJS、淘宝的SeaJS 第七阶段:主流的...

Global site tag (gtag.js) - Google Analytics