2

我正在使用 Yeoman,并且正在尝试设置 requirejs 来优化我的 CSS 文件。

我的 Gruntfile.js 中有这个:

requirejs: {
  css: {
    options: {
      optimizeCss: 'standard',
      cssIn: 'app/styles/main.css',
      out: 'app/styles/main.min.css'
    }
  }
}

当我运行构建命令时,出现错误:

grunt build

Running "requirejs:css" (requirejs) task
>> Error: TypeError: new path must be a string
>>     at Object.fs.renameSync (fs.js:439:18)
Warning: Task "requirejs:css" failed

我不太确定那里发生了什么,或者如何调试它。

有谁知道是什么问题?

4

1 回答 1

3

没关系,我解决了。

useminPrepareYeoman 附带的愚蠢任务与 grunt-requirejs 配置有关。有点烦人,尤其是。因为我想要使用 grunt-requirejs 是因为我不喜欢 usemin 一开始的工作方式。

更新:

这是我的有效配置:

//index.html:

<!-- build:js scripts/scripts.js -->
<script data-main="scripts/main" src="components/requirejs/require.js"></script>
<!-- endbuild -->


//Gruntfile.js:

requirejs: {
  js: {
    options: {
      baseUrl: '<%= yeoman.tmp %>/scripts',
      out: '<%= yeoman.dist %>/scripts/scripts.js',
      name: 'main',
      optimize: 'none',
      mainConfigFile: '<%= yeoman.app %>/scripts/main.js',
      useStrict: true,
      wrap: true
    }
  },
  css: {
    options: {
      optimizeCss: 'standard',
      cssIn: '<%= yeoman.app %>/styles/main.css',
      out: '<%= yeoman.dist %>/styles/main.css'
    }
  }
},
useminPrepare: {
  html: '<%= yeoman.app %>/index.html',
  options: {
    dest: '<%= yeoman.dist %>'
  }
},
usemin: {
  html: '<%= yeoman.dist %>/index.html',
  options: {
    dirs: ['<%= yeoman.dist %>']
  }
}

grunt.registerTask('build', [
  'requirejs:js',
  'requirejs:css',
  'useminPrepare', //must be after requirejs:css as it breaks its config params
  'usemin'
]);

注意:在 grunt-usemin 中仍然存在一个潜在错误,它(错误地)尝试更改 requirejs:css 配置的 requirejs 配置。我在这里报告过

于 2013-05-28T06:29:53.867 回答