Javascript grunt usemin:定义自定义流

Javascript grunt usemin:定义自定义流,javascript,gruntjs,yeoman,grunt-usemin,Javascript,Gruntjs,Yeoman,Grunt Usemin,我正在使用插件。我想知道下面该怎么做 我在index.html中有两个usemin配置块 <!-- build:js /scripts/scriptsmin.js --> <script src="/scripts/jquery.min.js"></script> ... ... <!-- endbuild --> <!-- build:js /scripts/scripts.js --> <script src="/scrip

我正在使用插件。我想知道下面该怎么做

我在
index.html
中有两个usemin配置块

<!-- build:js /scripts/scriptsmin.js -->
<script src="/scripts/jquery.min.js"></script>
...
...
<!-- endbuild -->

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

...
...
....
...
第一个块,
scriptsmin.js
,是缩小的文件。 其次,
scripts.js
,包含所有需要缩小的文件

我喜欢

  • 在第二个区块上运行minifier(uglifyjs)
  • concat第一块,第二块为缩小版(步骤1)

  • 如果这些块在同一个文件中,是否可能。我在网上看到了一节。无法了解是否可以命名配置块,并在每个配置块上设置单独的流。它讨论了基于文件名(index.html)的流。我应该如何编写grunt
    useminPrepare
    部分。

    只是想知道为什么JavaScript文件需要两个单独的目标,特别是如果它们将被缩小并连接到一个文件中。我要做的就是在文件的末尾有一个脚本块,如下所示:

    <!-- build:js /scripts/scripts.js -->
    <script src="/scripts/jquery.min.js"></script>
    <script src="/scripts/app.js"></script>
    <!-- endbuild -->
    
    grunt.registerTask('build', ['useminPrepare', 'concat', 'uglify', 'cssmin', 'usemin']);
    
    usemin看起来与useminPrepare没有太大区别,但是您可能会发现,如果一个文件包含与HTML其余部分相同的构建块,那么您需要使用一个文件“种子”useminPrepare。因此,实际的usemin配置中可能还有几个文件:

    usemin: {
        html: ['build/index.html', 'build/about.html', 'build/contact.html']
    }
    
    在useminPrepare运行之后,再运行concat、uglify和cssmin任务,最后运行usemin。因此,您有如下自定义任务:

    <!-- build:js /scripts/scripts.js -->
    <script src="/scripts/jquery.min.js"></script>
    <script src="/scripts/app.js"></script>
    <!-- endbuild -->
    
    grunt.registerTask('build', ['useminPrepare', 'concat', 'uglify', 'cssmin', 'usemin']);
    

    希望这有帮助。

    我也有同样的问题。如果您对两个文件而不是一个文件感到满意,那么可以使用usemin的fork。它很少启用新的流,即

    • 自由基
    • libs2min
    • 空虚
    • 除去
    看。因此,您的html将是:

    <!-- build:libs2min /scripts/scriptsmin.js -->
    <script src="/scripts/jquery.js"></script>
    ...
    ...
    <!-- endbuild -->
    
    <!-- build:js /scripts/scripts.js -->
    <script src="/scripts/app.js"></script>
    ....
    ...
    <!-- endbuild --> 
    

    并密切关注主回购-也许该功能离实现目标不远。

    谢谢您的帮助。我有两个块的原因是,我保持了小型外部库(jquery、angular等)的完整性,但只是concat。我读到最好不要通过经过良好测试的缩小文件再次运行缩小程序。所以我把它们放在一个街区里。其他文件,如我的自定义js,需要缩小,然后与其他文件合并。所以只有一个文件可以下载。对不起,我不清楚。你认为这有意义吗,可能吗。感谢AgainQuery通过Uglify缩小(这样就看不出有什么区别),通过Google闭包缩小角度(如果再次使用Uglify压缩,几乎没有什么区别);Uglify本身就是一个经过战斗测试的工具,如果你发现运行缩小的文件有任何问题,最好报告一个问题,然后我再次使用Uglify缩小我加载的所有内容,不管它是否已经缩小(通过RequireJS和r.js Optimizer),并且没有看到任何问题。唯一的缺点显然是缩减更多的代码需要更多的时间,但我怀疑运行min两次是否会引入任何错误。您知道当前版本的grunt usemin是否可能做到这一点吗?