@asgothのanswerは間違いなく動作しますが、これらに同様に他のオプションのカップルを考え出し 『』注入(またはビルドプロセス中にコードを削除する)。
example build.js fileに記載されているように、ビルドプロセス中にコードスニペットを組み込む/除外するには、ビルドpragmas
を使用できます。
//Specify build pragmas. If the source files contain comments like so:
//>>excludeStart("fooExclude", pragmas.fooExclude);
//>>excludeEnd("fooExclude");
//Then the comments that start with //>> are the build pragmas.
//excludeStart/excludeEnd and includeStart/includeEnd work, and the
//the pragmas value to the includeStart or excludeStart lines
//is evaluated to see if the code between the Start and End pragma
//lines should be included or excluded. If you have a choice to use
//"has" code or pragmas, use "has" code instead. Pragmas are harder
//to read, but they can be a bit more flexible on code removal vs.
//has-based code, which must follow JavaScript language rules.
//Pragmas also remove code in non-minified source, where has branch
//trimming is only done if the code is minified via UglifyJS or
//Closure Compiler.
pragmas: {
fooExclude: true
},
//Same as "pragmas", but only applied once during the file save phase
//of an optimization. "pragmas" are applied both during the dependency
//mapping and file saving phases on an optimization. Some pragmas
//should not be processed during the dependency mapping phase of an
//operation, such as the pragma in the CoffeeScript loader plugin,
//which wants the CoffeeScript compiler during the dependency mapping
//phase, but once files are saved as plain JavaScript, the CoffeeScript
//compiler is no longer needed. In that case, pragmasOnSave would be used
//to exclude the compiler code during the save phase.
pragmasOnSave: {
//Just an example
excludeCoffeeScript: true
},
私はおそらくからAMD
とrequirejs
を学ぶための良い場所ですjquery.mobile
code上のアクション、でこれを見ることができました。ここで
は私のために働いていたものです: AppLogger.js:私のGruntfile
でrequirejs
ため、このような構成により
requirejs:{
compile:{
options:{
baseUrl:"js/",
mainConfigFile:"js/main.js",
name:'main',
out:'js/main.min.js',
pragmas:{ appBuildExclude:true }
}
}
}
:
/* global console: false */
define(function() {
var debugEnabled = false;
//>>excludeStart('appBuildExclude', pragmas.appBuildExclude);
debugEnabled = true;
//>>excludeEnd('appBuildExclude');
return {
log:function (message) {
if (debugEnabled && console) {
console.log('APP DEBUG: ' + message);
}
}
};
});
Gruntfile.js 、プラグマ内のセクションはですおよびexcludeEnd
は、コンパイル/ビルドされたファイルから削除されました。
私はまだrequirejs
を学んでいますので、これはこの種のもののベストプラクティスではありませんが、確かに私のために働いています。
あなたの答えをありがとう。私が探していたものは若干異なり、私は質問の更新でそれを明確にしようとしました。 –
私の答えを編集しました。それが役立つかどうかを見てください。 – asgoth
これは間違いなく動作しますが、[r.js example build file](https://github.com/jrburke/r.js/blob/master/build/example.build)から 'pragmas'をビルドする別のオプションを考え出しました。 .js)。これは明らかに 'jquery.mobile'も[https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.events.js]を使用しています。私はあなたの答えを受け入れましたが、私のために働いているものを自分の別のものに追加します。ありがとうございました! –