首先说项目结构布局
gruntfile.json描述项目使用的grunt组件,申明了命令任务,比如构建编译压缩合并等。
对于npm install 命令,如果出错的话可能需要清除再行install或者npm update.使用npm list列举本地缺失或错误的包,进入相应文件夹进行单独构建npm install
module.exports = function (grunt) {
grunt.initConfig(
{
//描述项目构建信息,及组件版本信息
pkg: grunt.file.readJSON('package.json'),
//编译组件,我们一般是将各个部件合并成一个html网页,这样使得网页模块能被充分复用,保持代码一致性
assemble: {
options: {
//网页模板(布局),比如我们通常需要导航,可以简历一个导航样式的模板布局;比如错误页面信息,没有导航,我们可以另建一个erroLayout.hbs
layoutdir: 'include/html/layouts/',
//网页模块,比如footer.hbs login.hbs,他们可以相互通过<div id="slides"> {{> body}} </div>方式引入
partials:'include/html/partials/**/*',
//使用到的js
helpers: ['include/html/helpers/*.js']
},
//生成html网页的src文件夹及文件名模式,以及生成的target目录
site: {
expand: true,
cwd: 'include/html/pages/',
src: ['**/*.hbs'],
dest: 'public/'
}
},
//清理命令将要清除的文件
clean: {
html: ['public/*.html']
},
//针对js文件的静态错误检测
jshint: {
all: ['<%= pkg.jsSource %>/**/*.js']
},
//合并文件分隔符及目标位置
concat: {
options: {
// define a string to put between each file in the concatenated output
separator: ';'
},
//src:{'include/js/*.js'},
dist: {
files: {
'<%= pkg.jsDestination %>/<%= pkg.name %>-src.js': ['<%= pkg.jsSource %>/**/*.js']
}
},
//bower组件,工程内使用npm install bowe文件,bower install --allow-root bower install jquery bower init ,会自动生成bower.son,该文件表明bower安装的组件,所以如果有bower.son,直接使用bower install就可完成组件的下载。 windows下如果报错git path problem就尝试在git console里运行
bower: {
files: {
//Copy jquery from bower
'<%= pkg.jsDestination %>/vendor/jquery.min.js': ['bower_components/jquery/dist/jquery.min.js'],
'<%= pkg.jsDestination %>/vendor/jquery.min.map': ['bower_components/jquery/dist/jquery.min.map'],
//Only import bootstrap plugins that are used
'<%= pkg.jsDestination %>/vendor/bootstrap.js': [
'bower_components/bootstrap/js/modal.js',
'bower_components/bootstrap/js/collapse.js',
'bower_components/bootstrap/js/transition.js',
'bower_components/bootstrap/js/dropdown.js'
],
//Respond.js for older browsers
'<%= pkg.jsDestination %>/vendor/respond.min.js': ['bower_components/respond/dest/respond.min.js']
}
}
},
//压缩js文件
uglify: {
dist: {
files: {
'<%= pkg.jsDestination %>/<%= pkg.name %>-min.js': ['<%= pkg.jsDestination %>/<%= pkg.name %>-src.js']
}
},
bower: {
files: {
'<%= pkg.jsDestination %>/vendor/bootstrap-min.js': ['<%= pkg.jsDestination %>/vendor/bootstrap.js']
}
}
},
modernizr: {
dist: {
devFile : 'bower_components/modernizr/modernizr.js',
outputFile: '<%= pkg.jsDestination %>/vendor/modernizr.min.js',
files: {
src: [
'<%= pkg.jsSource %>/{,*/}*.js',
'<%= pkg.lessSource %>/{,*/}*.less'
]
}
}
},
less: {
main: {
options: {
paths: ["<%= pkg.lessSource %>"]
},
files: {
"<%= pkg.cssDestination %>/<%= pkg.name %>.css": "<%= pkg.lessSource %>/<%= pkg.name %>.less",
"<%= pkg.cssDestination %>/<%= pkg.name %>-bootstrap.css": "<%= pkg.lessSource %>/<%= pkg.name %>-bootstrap.less"
}
}
},
//用于压缩
cssmin: {
compress:{
files:{
"<%= pkg.cssDestination %>/<%= pkg.name %>-min.css":["<%= pkg.cssDestination %>/<%= pkg.name %>.css"],
"<%= pkg.cssDestination %>/<%= pkg.name %>-bootstrap-min.css":["<%= pkg.cssDestination %>/<%= pkg.name %>-bootstrap.css"]
}
}
},
//申明前端运行server
connect: {
server: {
options: {
keepalive: true,
hostname: '127.0.0.1',
port: 6080,
base: 'public/'
}
}
},
//监测到指定文件变化时自动执行任务
watch: {
js: {
files: [
'<%= pkg.jsSource %>/**/*' ],
tasks: ['jshint','concat:dist', 'uglify:dist', 'modernizr']
},
less: {
files: ['<%= pkg.lessSource %>/**/*'],
tasks: ['less','cssmin', 'modernizr']
},
html: {
files: ['include/html/**/*.hbs'],
tasks: ['clean', 'assemble']
}
}
});
//申明了一个default命令 会跑它后面的任务
grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less','cssmin', 'modernizr', 'clean', 'assemble']);
grunt.registerTask('build', ['default']);
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-handlebars');
grunt.loadNpmTasks('assemble');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks("grunt-modernizr");
};
package.json文件模式如下
{
"name": "somytaheri",
"version": "0.1.0",
"author": "Somy-Taheri",
"description": "Personal website",
"main": "gruntfile.js",
//申明全局变量
"lessSource": "include/less",
"cssDestination": "public/assets/css",
"jsSource": "include/js",
"jsDestination": "public/assets/js",
"engines": {
"node": "0.10.x",
"npm": "1.3.x"
},
"devDependencies": {
"assemble": "^0.4.42",
"grunt": "^0.4.5",
"grunt-contrib-clean": "^0.6.0",
"grunt-contrib-concat": "^0.5.0",
"grunt-contrib-connect": "^0.11.2",
"grunt-contrib-cssmin": "^0.10.0",
"grunt-contrib-handlebars": "^0.9.1",
"grunt-contrib-jshint": "^0.10.0",
"grunt-contrib-less": "^0.11.0",
"grunt-contrib-uglify": "^0.6.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-modernizr": "^0.6.0"
}
}
一下demo工程截图
less文件夹下的内容被layout文件引用,进行html网页文件布局。header footer被home.hbs及about.hbs等模块引用(此处是因为该工程一个index.hbs包括四个屏幕大小导致,一般情况是footer header被index.hbs引用),public/asserts是源img tff等文件,同时less及js既有导入的模块,同时有自己写的模块,前者在include下,后者被import进入工程,最后被grunt合并生成在grunt.js配置的目标位置。
以上,有空再续。
- 大小: 425.3 KB
分享到:
相关推荐
grunt-requirejs-revs 修改requirejs引用的文件 入门 这个插件需要~0.4.5 如果您以前从未使用过 ,请务必查看《指南》,因为它说明了如何创建以及安装和使用Grunt插件。 熟悉该过程后,可以使用以下命令安装此插件...
入门这个插件需要 Grunt ~0.4.5 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-requirejs-injector -...
grunt-requirejs-paths 在 main.js 中为 requirejs 创建路径对象的辅助多任务入门这个插件需要 Grunt ~0.4.1 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程...
在实际项目中,RequireJS 可以和其它工具如 Grunt、Gulp 或 Webpack 结合,进行自动化构建和优化,例如压缩合并模块、处理 CSS 和图片资源等。同时,RequireJS 也支持插件机制,如 r.js 用于构建优化,text 插件用于...
grunt-contrib-requirejs v1.0.0 使用r.js优化RequireJS项目入门如果您以前从未使用过 ,请务必查看《指南》,因为它说明了如何创建以及安装和使用Grunt插件。 熟悉该过程后,可以使用以下命令安装此插件: npm ...
Angularjs Requirejs Bower Grunt和Bootstrap的入门项目 入门 分支或克隆此项目,重命名并运行以下命令来设置环境。 您需要和才能正常工作。 首次安装依赖项: $ npm install -g grunt-cli $ npm install -g bower...
木偶基地生成的基础结构: 安装说明npm 安装凉亭凉亭安装npm i 杏仁凉亭 grunt grunt-bower-requirejs grunt-cli grunt-contrib-clean grunt-contrib-concat grunt-contrib-connect grunt-contrib-copy grunt-...
使用 RequireJS 和 PhantomJS 运行 Jasmine v1.3 测试的 Grunt 任务。 入门 这个插件需要 Grunt ~0.4.0 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,...
用于为 RequireJs 模块生成路径映射的插件 入门 这个插件需要 Grunt ~0.4.5 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此...
使用grunt / requirejs进行测试。要求 grunt npm install -g grunt-cli用法像普通的主干视图一样使用它; 向其传递一个元素,一个集合并传递一个列数组。 有关示例和入门,请参见“。 由于它是Backbone View的扩展...
bower-requirejs-config-generator 带有路径和垫片的 require 配置文件的生成器,从 bower.json 获取信息入门这个插件需要 Grunt ~0.4.5 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和...
Grunt 包,当您负担不起使用 requireJS 但仍希望拥有一个包含许多相互依赖的 Js 文件的结构化项目时,可帮助您维护文件之间的依赖关系。 入门 这个插件需要 Grunt ~0.4.1 如果您以前没有使用过 ,请务必查看指南,...
web-starter-grunt 0.1.1 入门 npm install bower install grunt 构建开发版本: grunt development 构建生产版本: grunt production
RequireJS+React 将 React 添加到 RequireJS 项目入门确保您安装了最新的软件包 npm installbower install注意:如果你没有安装npm ,请确保你已经安装了 。 如果你没有凉亭, npm install -g bower 。 上述步骤将...
##入门#####克隆存储库并安装依赖项克隆存储库: git clone https://github.com/sarah-story/angular-requirejs-es6.gitcd ./angular-requirejs-es6安装依赖项(Angular,Angular-route,requirejs,grunt-babel...
从这个生成器创建的模板是 Grunt、RequireJS 和 Bower 驱动的前端应用程序。 Grunt 会将代码编译成一些可嵌入的 HTML,链接到上传到 S3 的 CSS 和 JS 文件。 有两种主要类型:应用程序和内联。 应用程序适用于整页...
入门 这个插件需要 Grunt ~0.4.5 npm install grunt-y-u-no-bundle --save-dev 安装插件后,可以使用以下 JavaScript 代码在 Gruntfile 中启用它: grunt . loadNpmTasks ( 'grunt-y-u-no-bundle' ) ; 概述 如果...
此包含一个用于为竞赛构建游戏的准系统结构-带有自以为是的结构,该结构有利于依赖管理的requirejs 。 入门 sudo npm install -g grunt-cli npm install 运行完整版本 grunt 启动本地静态服务器进行开发 grunt ...
入门这个插件需要~0.4.5 如果您以前从未使用过 ,请务必查看《指南》,因为它说明了如何创建以及安装和使用Grunt插件。 熟悉该过程后,可以使用以下命令安装此插件: npm install grunt-jsonschema-amd-restclient-...