【问题标题】:nodejs / grunt usemin pluginnodejs / grunt usemin 插件
【发布时间】:2012-11-04 10:48:13
【问题描述】:

我正在使用 yeoman 和 grunt 来构建我的项目和 grunt-css 插件,用于使用 grunt.js 内置的“cssmin”而不是“css”

index.html

<!-- build:css styles/styles.css -->
<link rel="stylesheet" href="styles/main.css"/>
<!-- endbuild -->

<!-- build:js scripts/scripts.js -->
<script src="scripts/vendor/jquery.min.js"></script>
<script src="scripts/vendor/handlebars-1.0.0.beta.6.js"></script>
<script src="scripts/vendor/ember-1.0.pre.min.js"></script>
<script src="scripts/main.js"></script>
<script src="scripts/routes/app-router.js"></script>
<script src="scripts/store.js"></script>
<script src="scripts/controllers/application-controller.js"></script>
<script src="scripts/models/application-model.js"></script>
<script src="scripts/views/application-view.js"></script>
<!-- endbuild -->

Gruntfile.js

rev: {
      js: 'dist/scripts/**/*.js', // scripts/**/*.js
      css: 'dist/styles/**/*.css', // styles/**/*.css
      img: 'dist/images/**' // images/**
},
'usemin-handler': {
      html: 'index.html'
},
usemin: {
      html: ['dist/**/*.html'], // **/*.html
      css: ['dist/**/*.css'] // **/*.css
},
rjs: {
      // no minification, is done by the min task
      optimize: 'none',
      baseUrl: './scripts',
      wrap: true
},
cssmin: {
      dist: {
        src: [
          'app/styles/**/*.css'
        ],
        dest: 'dist/styles/styles.css'
      }
},
concat: {
      dist: {
        src: [
          'app/scripts/**/*.js'
        ],
        dest: 'dist/scripts/scripts.js',
        separator: '/**********/\n'
      }
},
min: {
      dist: {
        src: [
          'dist/scripts/scripts.js'
        ],
        dest: 'dist/scripts/scripts.js',
        separator: '/**********/\n'
      }
}

那么构建项目结构是:

dist/
|__scripts/
|____04216377.scripts.js
|__styles/
|____d41d8cd9.styles.css
|__index.html

然后输出index.html文件

<link rel="stylesheet" href="styles/styles.css"/?>

<script src="scripts/04216377.scripts.js"></script>

如您所见,除了将 index.html 中的修订样式重命名为 'styles/d41d8cd9.styles.css 之外,一切正常 有谁知道为什么? 问号是“?”线正常???


注意:有关更多信息,这将在我的控制台中输出(无错误) 运行 "rev:js" (rev) 任务 dist/scripts/scripts.js --- 04216377.scripts.js

运行“rev:css”(rev) 任务 dist/styles/styles.css --- d41d8cd9.styles.css

运行“rev:img”(rev)任务

运行“usemin:html”(usemin)任务

usemin:html - dist/index.html 脚本/scripts.js

was <script src="scripts/scripts.js"></script>
now <script src="scripts/04216377.scripts.js"></script>

运行“usemin:css”(usemin)任务

usemin:css - dist/styles/d41d8cd9.styles.css

并没有进行任何重命名! 非常感谢大家!

【问题讨论】:

标签: node.js gruntjs yeoman grunt-usemin


【解决方案1】:

我发现了问题。 我有 Yeoman 0.94 版本,需要修复 usemin 任务。 &lt;link&gt;处的?字符是一个正则表达式错误。 您应该重写此表达式,因为 css 重命名失败。 在https://github.com/yeoman/yeoman/issues/586找到正确的解决方法

替换

content.replace(block, indent + '<link rel="stylesheet" href="' + target + '"\/?>');

content.replace(block, indent + '<link rel="stylesheet" href="' + target + '"/>');

如果应用更改,则此问题已解决。 注意:在/usr/local/lib/node_modules/yeoman/tasksusemin.js 上应用补丁(在 OSX 上)

【讨论】:

  • 太棒了,你想通了!如果问题得到解决,只需将您自己的答案标记为已接受 :)
猜你喜欢
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多