刚刚开始学习一些Grunt(以及替代方案 - gulp.js),我遇到了一些我自己似乎无法弄清楚的混乱。我理解你如何为不同的环境定义不同的任务,以便提高效率和提高性能,但是我遇到的困难就是如何利用这两种类型的任务。
问题1:假设我有一个images
目录,我不希望在开发过程中运行grunt-contrib-imagemin
,但确实希望在生产过程中运行它“已处理”图片位于images/build
。我如何在文件路径中考虑到这一点?有没有办法实现自动化?
问题2:我不是开发人员,而且我对任何类型的服务器配置都没什么经验,所以当人们说“在您的服务器上运行grunt build
时我很困惑” 。那会发生什么?甚至可能像iPage这样廉价的共享主机吗?
我真的想用构建工具扩展我的知识,所以欢迎任何建议或评论。谢谢你花时间!
答案 0 :(得分:2)
您需要为开发和生产指定不同的任务。像
这样的东西grunt.initConfig({
imagemin: {
dev: {
// dev server minify config
},
prod: {
// production server minify config
}
},
devtask: {
//Some task for development mode
}
});
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('devtask');
grunt.registerTask('default', ['devtask']);
grunt.registerTask('dev', ['devtask']);
grunt.registerTask('prod', ['imagemin:prod']);
现在如果你在终端输入'grunt dev',grunt只运行'devtask'。只是'grunt'将运行'default'中列出的任务,这与'grunt dev'相同。
如果输入'grunt prod',grunt会运行imagemin任务的prod目标。
所以现在imagemin仅用于生产。
修改imagemin任务的'src'和'dest'属性以获取'images / build'中的输出。您可以指定'cwd'属性来告诉文件路径。
要在服务器端执行这些操作,您需要NodeJS。一些网络托管公司提供。您需要咨询您的。我通常只是在我的开发机器上执行grunt步骤,然后通过ftp将输出文件传输到服务器。这一步也可以通过许多可用的grunt ftp插件通过grunt完成。