gpt4 book ai didi

angularjs - 如何在useminPrepare中为HTML文件中的每个 block 定义单独的流程?

转载 作者:行者123 更新时间:2023-12-04 03:11:35 26 4
gpt4 key购买 nike

我们在index.html中定义了2个块-一个块用于第三方库,另一个块用于我们的应用程序文件。由于第3方库已被缩小,因此我们只想将它们串联起来,而不要丑化它们。如何使用useminPrepare做到这一点?

<!-- build:js js/lib.js -->
<script src="lib/angular/angular.min.js"></script>
<script src="lib/angular-cookies/angular-cookies.min.js"></script>
<script src="lib/angular-route/angular-route.min.js"></script>
<!-- endbuild -->

<!-- build:js js/app.js -->
<script src="js/app.js"></script>
<script src="js/controllers/LanguageCtrl.js"></script>
<!-- endbuild -->

gruntfile.js:
useminPrepare: {
html: '<%= yeoman.app %>/index.html',
options: {
dest: '<%= yeoman.dist %>',
flow: {
html: {
steps: {
// TODO for libs.js block I don't want uglify!
js: ['concat', 'uglifyjs'],
css: ['cssmin']
},
post: {}
}
}
}
}

最佳答案

似乎您需要定义自定义块。将在示例中显示-仅使用concat创建自定义块“myjs”。

Gruntfile.js

useminPrepare: {
html: '<%= config.app %>/index.html',
options: {
dest: '<%= config.dist %>',
flow: {
// i'm using this config for all targets, not only 'html'
steps: {
// Here you define your flow for your custom block - only concat
myjs: ['concat'],
// Note that you NEED to redefine flow for default blocks...
// These below is default flow.
js: ['concat', 'uglifyjs'],
css: ['concat', 'cssmin']
},
// also you MUST define 'post' field to something not null
post: {}
}
},
},

您还需要为自定义块定义块替换。这些块应与js相同。

Gruntfile.js:
usemin: {
options: {
assetsDirs: ['<%= config.dist %>', '<%= config.dist %>/images'],
blockReplacements: {
// our 'replacement block'
myjs: function (block) {
return '<script src="' + block.dest + '"></script>';
}
// no need to redefine default blocks
}
},
html: ['<%= config.dist %>/{,*/}*.html'],
css: ['<%= config.dist %>/styles/{,*/}*.css']
},

因此,现在您可以在index.html中使用新的自定义块:
<!-- build:myjs js/lib.js -->
<script src="lib/angular/angular.min.js"></script>
<script src="lib/angular-cookies/angular-cookies.min.js"></script>
<script src="lib/angular-route/angular-route.min.js"></script>
<!-- endbuild -->

<!-- build:js js/app.js -->
<script src="js/app.js"></script>
<script src="js/controllers/LanguageCtrl.js"></script>
<!-- endbuild -->

现在,它应该可以按您想要的方式工作。我尚未测试此代码,但我的应用程序中的配置非常相似,它的工作原理很吸引人。在定义替换块时,我也遇到了一些问题-这非常令人沮丧。

希望能帮助到你!

关于angularjs - 如何在useminPrepare中为HTML文件中的每个 block 定义单独的流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572972/

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