使用 grunt 将本地 *.js 和 *.css 文件自动引用到 index.html

Posted

技术标签:

【中文标题】使用 grunt 将本地 *.js 和 *.css 文件自动引用到 index.html【英文标题】:Automatic reference of local *.js and *.css files into index.html with grunt 【发布时间】:2017-02-17 05:24:46 【问题描述】:

我打算开发一个 angularJS 客户端,我将在其中使用 Angular 组件。这将导致多个 .js/.css 文件。 为了避免手动引用每个新添加的 js/css 文件,我打算使用 grunt-include-source 任务。

问题是,在配置 Gruntfile.js 后,“grunt includeSource”任务运行,返回“Done,没有错误”。状态,但 index.html 文件中没有更新。

我的项目结构如附图所示(我使用 WebStorm 作为 IDE)。

我的 index.html 文件如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>RavenApp</title>
    <!-- include: "type": "css", "files": "*.css" -->
</head>
<body>
    <!-- bower:js -->
    <script src="../bower_components/angular/angular.js"></script>
    <script src="../bower_components/angular-route/angular-route.js"></script>
    <script src="../bower_components/angular-sanitize/angular-sanitize.js"></script>
    <script src="../bower_components/angular-mocks/angular-mocks.js"></script>
    <script src="../bower_components/jquery/dist/jquery.js"></script>
    <script src="../bower_components/underscore/underscore.js"></script>
    <!-- endbower -->

    <!-- include: "type": "js", "files": "*.js" -->
</body>
</html>

我的 Gruntfile.js 如下:

module.exports = function (grunt) 
    grunt.loadNpmTasks('grunt-wiredep');
    grunt.loadNpmTasks('grunt-include-source');

    grunt.initConfig(
        wiredep: 
            target: 
                src: 'app/index.html'
            
        ,
        includeSource: 
            options: 
                basePath: 'app',
                templates: 
                    html: 
                        js: '<script src="filePath"></script>',
                        css: '<link rel="stylesheet" type="text/css" href="filePath" />'
                    
                ,
                app: 
                    files: 
                        'app/index.html': 'app/index.html'
                    
                
            
        
    );
;

谁能指出我做错了什么? 谢谢。

【问题讨论】:

app 移动到options 之外的gruntfile.js 确实,这就是问题所在。现在可以了,非常感谢。 【参考方案1】:

我们不需要在includeSource键下写templates键:

module.exports = function (grunt) 
grunt.loadNpmTasks('grunt-wiredep');
grunt.loadNpmTasks('grunt-include-source');

grunt.initConfig(
    wiredep: 
        target: 
            src: 'app/index.html'
        
    ,
    includeSource: 
        options: 
            basePath: 'app',                
            app: 
                files: 
                    'app/index.html': 'app/index.html'
                
            
        
    
);
;

HTML 代码足以包含 js 和 css:

 <!-- include: "type": "css", "files": "*.css" -->
 <!-- include: "type": "js", "files": "*.js" -->

【讨论】:

以上是关于使用 grunt 将本地 *.js 和 *.css 文件自动引用到 index.html的主要内容,如果未能解决你的问题,请参考以下文章

简单使用grunt工具合并压缩js和css

将 grunt 与现有的 wordpress 实例一起使用

Grunt的配置及使用(压缩合并js/css)

grunt 合并压缩js和css文件

grunt管理js/css

grunt的用法