2016-09-01 5 views
2

私はGoogleクロージャコンパイラを使用しようとしています。クロージャコンパイラは、CommonJSスタイルでjsファイルを使用する必要がありますか?

IはprocessCommonJsModulesフラグとのGoogle閉コンパイラJS例に従った:index.jsrequire('./app.js')が含まれ、

gulp.task('script', function() { 
    return gulp.src('./src/app/index.js') 
    .pipe(compiler({ 
     compilationLevel: 'SIMPLE', 
     warningLevel: 'VERBOSE', 
     jsOutputFile: 'output.min.js', // outputs single file 
     createSourceMap: true, 
     processCommonJsModules: true 
    })); 
    .pipe(gulp.dest('./dist')); 
}); 

と。

これは機能せず、エラーメッセージは非常に助けにならないです:すべての

[17:59:04] src\app\index.js:2 (JSC_COMMONJS_MODULE_LOAD_ERROR) 
[17:59:04] Failed to load module "./app.js" 
[17:59:04] require('./app.js'); 

だこと。それは理由を言及せずに編集が失敗したということだけです。

閉鎖コンパイラリポジトリ(https://github.com/google/closure-compiler/wiki/JS-Modules)のモジュールに関するドキュメントを読んだところ、説明:Paths must be absolute or relative and omit the file extensionが見つかりました。

私は次の4つの方法を試してみたが、それらのどれも機能しません:

  • requre('./app.js')
  • requre('./app')
  • requre('/absolute/path/to/app.js')
  • requre('/absolute/path/to/app')

たぶん閉鎖コンパイラはJSを必要とするサポートしていません。ファイルですか?

または、何か不足していますか?

答えて

2

クローズコンパイラはソースファイルを検出しません。可能なすべてのモジュールソースを渡す必要があります。また、コンパイラがソースファイルを正しく注文するように、dependency management optionsを使用する必要があります。私はあなたの一口スクリプトがのようなものに見えることを期待する

gulp.task('script', function() { 
    // modify this to get all of your source files 
    return gulp.src('./src/app/**') 
    .pipe(compiler({ 
     compilationLevel: 'SIMPLE', 
     warningLevel: 'VERBOSE', 
     jsOutputFile: 'output.min.js', // outputs single file 
     createSourceMap: true, 
     processCommonJsModules: true, 
     dependency_mode: 'LOOSE', 
     entry_point: './src/app/index' 
    })); 
    .pipe(gulp.dest('./dist')); 
}); 
+0

ありがとうございました!最後に、それは動作します! – xylosper

関連する問題