2

私の一般的なコーディングスキルをレベルアップしようとして...そして何か新しいことを学ぼうとしています. 以下で構成されるフロントエンドのみのソリューションを配線しようとし始めました

  1. デュランダル
  2. ジャスミン - [npm経由で追加]
  3. コードファイルの変更に合わせてテストを監視および実行する Grunt Watch - [npm 経由で追加]

これはすべて過去 2 日間の実験に基づいているため、お気軽に訂正してください。これのほとんどは私にとって新しいものです。私の目標は、angular がカルマに持つものと同様のものを持つことです。

今、私はデュランダル プロジェクト (github ソリューションに見られるように、カスタム スペック ランナーが付属しています) を認識しています。

私のセットアップ:

gruntfile.js

    module.exports = function(grunt) {
    var appPath = 'App/viewmodels/*.js';
    var testPath = 'Tests/**/*.js';
    grunt.initConfig({
        jasmine:    {
            pivotal: {
                src: appPath,
                options: {
                    specs: testPath,
                    template: require('grunt-template-jasmine-requirejs'),
                    templateOptions: {
                      requireConfigFile: 'SpecRunner.js'
                    }
                }
            }
        },
        jshint: {
            all: [testPath, appPath],
            options: {
                curly: true
            }
        },
        watch: {
            files: [testPath, appPath], 
            tasks: ['jshint','jasmine']
        }   
    });

    grunt.loadNpmTasks('grunt-contrib-jasmine');
    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-watch');

    grunt.registerTask('default', ['jshint','jasmine']);    
};

SpecRunner.js

require.config({
  paths: {
    jquery: 'Scripts/jquery-1.9.1',
    knockout: 'Scripts/knockout-2.3.0'
  },
  shim: {
    knockout: {
      exports: "ko"
    }
  }
});

grunt を実行すると、不正なパスまたはスクリプト エラー ['plugins/http'] が表示されます (スクリーンショットで ko の問題を整理しました)。 ここに画像の説明を入力

質問:

依存関係を必要とするように gruntfile を設定するにはどうすればよいですか。私はrequireするのが初めてで、テストでサードパーティのライブラリやその他のカスタムjsファイルなどを見つける場所を認識させるように構成する方法がわかりません

4

1 に答える 1

2

SpecRunnerrequire.configに Durandal 固有のパス情報がありません。を「App」に設定するbaseUrlと、以下のパスは HTML サンプルまたは StarterKit レイアウトと一致します。レイアウトが異なる場合は、それに応じてこれを調整する必要があります。

requirejs.config({
    paths: {
        'text': '../lib/require/text',
        'durandal':'../lib/durandal/js',
        'plugins' : '../lib/durandal/js/plugins',
        'transitions' : '../lib/durandal/js/transitions',
        'knockout': '../lib/knockout/knockout-2.3.0',
        'bootstrap': '../lib/bootstrap/js/bootstrap',
        'jquery': '../lib/jquery/jquery-1.9.1'
    }
});
于 2013-10-10T10:01:25.043 に答える