gpt4 book ai didi

javascript - 让 Grunt 为不同的设置生成 index.html

转载 作者:IT老高 更新时间:2023-10-28 11:06:12 27 4
gpt4 key购买 nike

我正在尝试使用 Grunt 作为我的 web 应用程序的构建工具。

我想要至少有两个设置:

我。开发设置 - 从单独的文件加载脚本,不连接,

所以我的 index.html 看起来像:

<!DOCTYPE html>
<html>
<head>
<script src="js/module1.js" />
<script src="js/module2.js" />
<script src="js/module3.js" />
...
</head>
<body></body>
</html>

二。生产设置 - 将我的脚本压缩并连接到一个文件中,

相应地使用 index.html:

<!DOCTYPE html>
<html>
<head>
<script src="js/MyApp-all.min.js" />
</head>
<body></body>
</html>

问题是,当我运行 grunt devgrunt prod 时,如何根据配置使 grunt 生成这些 index.html?

或者也许我在挖掘错误的方向,总是生成 MyApp-all.min.js 但将我的所有脚本(串联)或加载器脚本放入其中会更容易从单独的文件中异步加载这些脚本?

你们是怎么做到的,伙计们?

最佳答案

我最近发现了这些与 Grunt v0.4.0 兼容的任务:

Grunt task around preprocess npm module.

Grunt task to automate environment configuration for future tasks.

以下是我的 Gruntfile.js 的片段。

环境设置:

env : {

options : {

/* Shared Options Hash */
//globalOption : 'foo'

},

dev: {

NODE_ENV : 'DEVELOPMENT'

},

prod : {

NODE_ENV : 'PRODUCTION'

}

},

预处理:

preprocess : {

dev : {

src : './src/tmpl/index.html',
dest : './dev/index.html'

},

prod : {

src : './src/tmpl/index.html',
dest : '../<%= pkg.version %>/<%= now %>/<%= ver %>/index.html',
options : {

context : {
name : '<%= pkg.name %>',
version : '<%= pkg.version %>',
now : '<%= now %>',
ver : '<%= ver %>'
}

}

}

}

任务:

grunt.registerTask('default', ['jshint']);

grunt.registerTask('dev', ['jshint', 'env:dev', 'clean:dev', 'preprocess:dev']);

grunt.registerTask('prod', ['jshint', 'env:prod', 'clean:prod', 'uglify:prod', 'cssmin:prod', 'copy:prod', 'preprocess:prod']);

并在/src/tmpl/index.html模板文件中(例如):

<!-- @if NODE_ENV == 'DEVELOPMENT' -->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script src="../src/js/foo1.js"></script>
<script src="../src/js/foo2.js"></script>
<script src="../src/js/jquery.blah.js"></script>
<script src="../src/js/jquery.billy.js"></script>
<script src="../src/js/jquery.jenkins.js"></script>

<!-- @endif -->

<!-- @if NODE_ENV == 'PRODUCTION' -->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script src="http://cdn.foo.com/<!-- @echo name -->/<!-- @echo version -->/<!-- @echo now -->/<!-- @echo ver -->/js/<!-- @echo name -->.min.js"></script>

<!-- @endif -->

我确定我的设置与大多数人不同,上述设置的用处将取决于您的情况。对我来说,虽然这是一段很棒的代码,但 Yeoman grunt-usemin比我个人需要的更强大。

注意:刚刚今天发现了上面列出的任务,所以我可能会遗漏一个功能和/或我的流程可能会改变。现在,我喜欢 grunt-preprocess 的简单功能。和 grunt-env必须提供。 :)


我不确定它是否对任何人有任何帮助,但我创建了 this demo repository on GitHub这显示了使用我上面概述的技术的完整(和更复杂的设置)。

关于javascript - 让 Grunt 为不同的设置生成 index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12401998/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com