0

我刚刚开始掌握useminwiredep。我的 index.html 文件中有这个:

<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<!-- build:css(.) styles/vendor.css -->
<!-- bower:css -->
<!-- endbower -->
<!-- build:css(.tmp) styles/core.css -->
<link rel="stylesheet" href="styles/core.css">
<!-- endbuild -->

如果我运行grunt buildindex.html被修改为:

<!-- build:css(.) styles/vendor.css -->
<!-- bower:css -->
<link rel="stylesheet" href="bower_components/angular-loading-bar/build/loading-bar.css" />
<link rel="stylesheet" href="bower_components/angular-ui-select/dist/select.css" />
<link rel="stylesheet" href="bower_components/ng-notify/src/styles/ng-notify.css" />
<link rel="stylesheet" href="bower_components/components-font-awesome/css/font-awesome.css" />
<!-- endbower -->
<!-- endbuild -->
<!-- build:css(.tmp) styles/core.css -->
<link rel="stylesheet" href="styles/core.css">
<!-- endbuild -->

这很棒,但它只发生在bower:css文件中(我相信它是用wiredep完成的。在我的页面下方,我有类似于JavaScript 文件并且也可以工作。我想为我自己的JavaScript 文件做这件事。目前我有大约 100 个,我已经手动将其放入我的src/index.html。当我的应用程序构建时,usemin用连接的、丑陋的版本替换我的脚本,这很棒。但是当我构建时,我想要src/ index.htmlsrc/app目录中获取所有脚本并将它们注入到我的 html 文件中。

这可以做到吗?

4

1 回答 1

0

我设法使用grunt-injector解决了这个问题。我将Gruntfile配置为使用 grunt-injector,如下所示:

// Automatically inject my components into index.html
injector: {
  options: {
    template: '<%= yeoman.app %>/index.html'
  },
  html: {
    options: {
      transform: function (filePath) {
          return '<script type="text/ng-template" src="' + filePath.replace('/src/', '') + '"></script>';
      }
    },
    files: {
      '<%= yeoman.app %>/index.html': [
        '<%= yeoman.app %>/app/**/*.html'
      ]
    }
  },
  scripts: {
    options: {
      transform: function (filePath) {
          return '<script src="' + filePath.replace('/src/', '') + '"></script>';
      }
    },
    files: {
      '<%= yeoman.app %>/index.html': [
        '<%= yeoman.app %>/app/**/*.module.js',
        '<%= yeoman.app %>/app/**/*.js'
      ]
    }
  },
  styles: {
    options: {
      transform: function (filePath) {
          var media = filePath.indexOf('print') > -1 ? 'print' : 'screen';
          return '<link rel="stylesheet" media="' + media + '" href="' + filePath.replace('/.tmp/', '') + '" />';
      }
    },
    files: {
      '<%= yeoman.app %>/index.html': [
        '.tmp/styles/**/*.css'
      ]
    }
  }
},

然后在我的index.html中,我只是将注入器注释如下:

  <!-- injector:css -->
  <!-- endinjector -->

被转换成这个:

  <!-- injector:css -->
  <link rel="stylesheet" media="screen" href="styles/core.css" />
  <link rel="stylesheet" media="print" href="styles/print.css" />
  <!-- endinjector -->

就是这样。

于 2017-12-06T15:04:37.870 回答