0

我是 Sails.js 的新手,在向它的 gruntfile 添加其他任务时遇到问题。我想要做的是使用带有 Less 的 autoprefixer,但每次我调用“sails lift”时都会收到以下错误:

error: Grunt :: Warning: Task "autoprefixer:multiple_files" not found. Use --force to continue.

>> Tasks directory "grunt-autoprefixer" not found.

这是我添加到 gruntfile 中的行:

grunt.loadTasks('grunt-autoprefixer');

grunt.initConfig({
  autoprefixer: {
    options: {
      browsers: ['last 2 version', 'ie 8', 'ie 7']
    },
    multiple_files: {
      expand: true,
      flatten: true,
      src: 'assets/linker/styles/*.css',
      dest: 'assets/linker/styles/'
    },
    concat: {
      src: 'assets/linker/styles/*.css',
      dest: 'assets/linker/styles/s.css'
    }
  },
//Rest of initConfig...

//compileAssets task
grunt.registerTask('compileAssets', [
  'clean:dev',
  'jst:dev',
  'less:dev',
  'autoprefixer:multiple_files',
  'copy:dev',    
  'coffee:dev'
 ]);

我尝试从 compileAssets 任务中删除“multiple_files”。我已经尝试在本地和全局安装 autoprefixer 但没有骰子,总是同样的错误。

有任何想法吗?

谢谢!

4

2 回答 2

3

你少了三个字母。

grunt.loadTasks('grunt-autoprefixer');

应该:

grunt.loadNpmTasks('grunt-autoprefixer');

前者从您指定的目录加载任务,后者从node_modules.

于 2013-11-10T13:13:33.183 回答
3

loadNpmTasks而不用loadTasks

loadNpmTasks从加载本地安装的模块node_modules。这是您需要使用的。

loadTasks从指定目录加载代码并且不执行诸如读取 package.json、通过模块依赖项递归以及其他loadNpmTasks处理的好东西之类的事情。

这就是您看到错误的原因:loadTasks正在寻找一个名为“grunt-autoprefixer”的目录。

如果您喜欢阅读源代码,您可以在此行之前的代码中看到发生了什么。:)

另请注意:由于工作方式的原因,需要在本地loadNpmTasks安装 grunt 模块。这是设计使然。当我第一次开始使用 grunt 时,我被这个抓住了,因为我假设了加载功能是如何工作的。哎呀。

于 2013-11-10T13:28:35.877 回答