3

Grunt の調査を開始しました。いくつかのサイトを読んで、例を見ました。さて、package.json と Gruntfile.js を作成しました。

package.json http://pastebin.com/Kkt8fuXJ

Gruntfile.j http://pastebin.com/LnSmTzXZ

私のプロジェクトのフォルダーの構成は次のとおりです。

root (index.html)
-src (where is package.json and Gruntfile.js)
-lib
 --css
  ---min
 --js
 --img

コマンドうなり声を出すと、常に次のエラーが発生します。

Loading "Gruntfile.js" tasks...ERROR
>> Error: Unable to parse "package.json" file (Unexpected token }).
Warning: Task "default" not found. Use --force to continue.

Aborted due to warnings.

pkg を削除すると: grunt.file.readJSON('package.json'),:

        grunt.loadNpmTasks('grunt-contrib-imagemin');
        ^^^^^
Loading "Gruntfile.js" tasks...ERROR
>> SyntaxError: Unexpected identifier
Warning: Task "default" not found. Use --force to continue.

Aborted due to warnings.

なにが問題ですか?

ありがとう

4

1 に答える 1

5

最初のエラーは、package.json が有効な JSON ではないことが原因です。私の知る限り、9行目の最後に不要なカンマを使用しています。有効なJSONは次のようになります:

{
  "name": "EREBD",
  "description": "Site do evento EREBD XVII",
  "version": "1.0.0",
  "main": "Gruntfile.js",
  "dependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-cssmin": "~0.6.1",
    "grunt-contrib-imagemin": "~0.1.4"  //<- no comma there
  }
}

ただし、Gruntfile 内で package.json をインポートする必要さえありません。これは、とにかくそのプロパティを使用していないためです。では、Gruntfile の何が問題なのですか? さて、npm タスクをロードし、エクスポートされた関数の外で grunt タスクを定義しています。これは、正しい方法のように見えます。

module.exports = function(grunt) {
    grunt.initConfig({
        // image optimization
        imagemin: {
            dist: {
                options: {
                    optimizationLevel: 4,
                    progressive: true
                },
                files: [{
                    expand: true,
                    cwd: '../lib/img/',
                                        src: '**/*',
                    dest: '../lib/img/'
                }]
            }
        },
        // minify css
        cssmin: {
                minify: {
                    expand: true,
                    src: ['../lib/css/*.css'],
                    dest: '../lib/css/min/',
                    ext: '.min.css'
                }
        }
    });

    // load tasks
    grunt.loadNpmTasks('grunt-contrib-imagemin');
    grunt.loadNpmTasks('grunt-contrib-cssmin');

    // extra tasks

    // register task
    grunt.registerTask('default', [
        'imagemin',
        'cssmin'
    ]);
};
于 2013-06-28T15:00:16.807 に答える