打开Start Command Prompt with Ruby,命令行中直接输入gem install sass进行装sass
4、配置内容变动监听和自动刷新livereload不起作用
检查是否是360浏览器,如是可以换其他浏览器重试,一般能够正常自动刷新。
package.json代码实例
{
"name": "angulr",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {},
"devDependencies": {
"body-parser": "^1.18.2",
"connect-livereload": "^0.6.0",
"faye-websocket": "^0.11.1",
"figures": "^2.0.0",
"grunt": "^1.0.1",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-connect": "^1.0.2",
"grunt-contrib-cssmin": "*",
"grunt-contrib-jshint": "^1.1.0",
"grunt-contrib-sass": "^1.0.0",
"grunt-contrib-uglify": "^3.1.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-cssc": "*",
"grunt-htmlhint": "*",
"livereload-js": "^2.2.2",
"matchdep": "*",
"node-sass": "^4.7.1",
"uglify-js": "^3.1.9",
"uri-path": "^1.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Gruntfile.js代码实例:
// ***********************************
// http://www.gruntjs.net/
// Grunt 是一种自动化任务处理工具,它就是一个工具框架,有很多插件扩展它的功能。
// 一句话:自动化。对于需要反复重复的任务,例如压缩(minification)、编译、单元测试、linting等,自动化工具可以减轻你的劳动,简化你的工作。当你在 Gruntfile 文件正确配置好了任务,任务运行器就会自动帮你或你的小组完成大部分无聊的工作。
// Grunt生态系统非常庞大,并且一直在增长。由于拥有数量庞大的插件可供选择,因此,你可以利用Grunt自动完成任何事,并且花费最少的代价。如果找不到你所需要的插件,那就自己动手创造一个Grunt插件,然后将其发布到npm上吧。
//***********************************
module.exports = function(grunt) {
var sassStyle = 'expanded';
grunt.initConfig({
// 读取 package.json 文件,并把里面的信息获取出来,方便在后面任务中应用(例如下面就用了 <%= pkg.name %> 来输出项目名称),这样可以提高灵活性
pkg: grunt.file.readJSON('package.json'),
//****任务配置代码****
// 自动将 ./scss/style.scss 生成 ./style.css
//sass: {
// output : {
// options: {
// style: sassStyle
// },
// files: {
// './style.css': './scss/style.scss'
// }
// }
//},
// 自动将 ./src/plugin.js 和 ./src/plugin2.js 合并成 ./global.js
concat: {
dist: {
src: ['./js/config.js', './src/*/*.js'],
dest: './global.js',
},
},
uglify: {
compressjs: {
files: {
'./global.min.js': ['./global.js']
}
}
},
jshint: {
all: ['./global.js']
},
watch: {
scripts: {
files: ['./js/config.js'],
files: ['./js/config.js'],
tasks: ['concat','jshint','uglify']
},
sass: {
files: ['./scss/style.scss'],
tasks: ['sass']
},
livereload: {
options: {
livereload: '<%= connect.options.livereload %>'
},
files: [
'*.html',
'style.css',
'global.min.js'
]
}
},
connect: {
options: {
port: 9000,
open: true,
livereload: 35729,
hostname: 'localhost'
},
server: {
options: {
port: 9001,
base: './'
}
}
}
});
//****插件加载代码****
// sass编译
//grunt.loadNpmTasks('grunt-contrib-sass');
// 合并文件
grunt.loadNpmTasks('grunt-contrib-concat');
// 语法检查
grunt.loadNpmTasks('grunt-contrib-jshint');
// 压缩文件
grunt.loadNpmTasks('grunt-contrib-uglify');
// 监听文件变动
grunt.loadNpmTasks('grunt-contrib-watch');
// 建立本地服务器
grunt.loadNpmTasks('grunt-contrib-connect');
//****任务注册代码****
//grunt.registerTask('outputcss',['sass']);
grunt.registerTask('concatjs',['concat']);
grunt.registerTask('compressjs',['concat','jshint','uglify']);
//来注册一个任务,意思是在 watchit 上面注册了'concat','jshint','uglify','connect','watch'几个任务, watchit 就是别名
grunt.registerTask('watchit',['concat','jshint','uglify','connect','watch']);
//default是默认的 task,当你在项目目录执行 grunt 的时候,它会执行注册到 default 上面的任务。
grunt.registerTask('default',['concat','jshint','uglify','connect','watch']);
};