使用CSS和Javascript缩小单个HTML文件的Grunt任务
Grunt task(s) to minify single HTML file with CSS and Javascript
我正在做一个登录页面,我希望它尽可能轻量级,以获得最快的加载时间。我有一个依赖项(一个配置文件),其他所有内容都编码在一个名为index.html
的html文件上。
虽然我在分别缩小JS、HTML和CSS(例如,在它们各自的.JS、.HTML和.CSS文件中)方面没有问题,但我似乎找不到缩小包含三个不同方面的单个HTML文件的方法。
对于HTML,我使用grunt contrib htmlmin,但我的主要目标是缩小该文件上的js。
我知道我的目标是2或3KB,我有缓存作为我的朋友,等等,但原则上,我想知道是否有一种简单的方法来实现,或者另一方面,我需要在单独缩小后组装最终的index.html文件。
提前谢谢。
根据@Will的建议,我确实通过将我提到的3个插件加上@Will建议的grunt Process HTML进行了混搭来实现这一点。
我留给你解决这个问题所需的步骤,只需用你自己的路径替换这些路径。
我的路径:
.
..
index.html
styles.css
index.js
控制台上:
npm install grunt-contrib-clean --save-dev
npm install grunt-contrib-htmlmin --save-dev
npm install grunt-processhtml --save-dev
npm install grunt-contrib-uglify --save-dev
npm install grunt-contrib-cssmin --save-dev
Gruntfile.js:
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
cssmin: {
minify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */'n'
},
expand: true,
src: ['*.css', '!*.min.css'],
dest: 'dist/',
ext: '.min.css'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */'n'
},
build: {
src: 'index.js',
dest: 'dist/index.min.js'
}
},
processhtml: {
dist: {
options: {
process: true,
data: {
title: 'My app',
message: 'This is production distribution'
}
},
files: {
'dist/index.min.html': ['index.html']
}
}
},
htmlmin: {
dist: {
options: {
removeComments: true,
collapseWhitespace: true
},
files: {
'dist/index.html': 'dist/index.min.html'
}
}
},
clean: ['dist*//*.min.*']
});
grunt.loadNpmTasks('grunt-contrib-htmlmin');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-processhtml');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.registerTask('default', ['cssmin','uglify', 'processhtml', 'htmlmin','clean']);
grunt.registerTask('build', ['cssmin','uglify', 'htmlmin', 'processhtml']);
};
我认为您正在寻找咕哝的ProcessHTML及其相当出色的include子任务。
在你的index.html文件中,你可以包括。。。包括。:)
<!-- build:include my-styles.min.css -->
This will be replaced by the content of my-styles.min.css
<!-- /build -->
如果这对你不起作用,一个简单的bash脚本连接缩小的版本也可以用Grunt run运行。
相关文章:
- Grunt-connect在根目录之外提供静态文件
- grunt上的压缩文件夹不起作用
- Grunt-将多个文件最小化/处理为一个文件
- Grunt从typescript源生成空文件
- Grunt不看JS文件
- Grunt排除在生成过程中插入某些文件
- 在linux上使用软件包减少grunt的大小.文件路径对Jenkins来说太长
- 如何将json文件添加到grunt构建中
- 如何在Grunt.js中观察多个文件,但只在更改的文件上运行任务
- 无法使用grunt contrib clean跳过文件
- 从另一个grunt文件加载grunt任务
- 使用 grunt 检查单个 javascript 文件时如何解决依赖关系
- Grunt 可以直接从文件对象/数组或 glob 中的“src”值通过 HTTP 加载远程文件
- Grunt imagemin-观察多个文件/文件夹优化单个文件
- 如何通过grunt contrib uglify按顺序缩小js文件
- 更新:用户错误-TYPO!!grunt contrib咖啡错误查找文件&写入目的地
- Grunt-获取当前调用文件夹,而不是gruntfile当前文件夹
- grunt:观察并同步文件
- 使用requirejs加载一个包含多个类的文件(grunt-concat)
- 如何使用grunt http服务器访问区域json文件(grunt-contrib-connect)