問題タブ [uglifyjs2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
minify - コードの特定の領域をスキップするよう UglifyJS に指示する
おそらく次のようなコメントを使用して、UglifyJS にコードの特定のセクションをスキップするように指示する方法はありますか?
私のユースケースは、インライン化され、パフォーマンス向上のために独自の方法で解析される関数の縮小を回避することに関係しています。縮小すると、単純化されたパーサーが壊れます。
javascript - ポンド記号 (#) をコメントとして JavaScript で開始しますか?
ポンド記号 (#) は JavaScript でコメントを開始しますか? NPM で使用している Web サイトがあり、Grunt で JavaScript を縮小しようとすると、Uglify がエラーをスローしました。
参照されているファイル名は、別の NPM モジュールからのもののようです。つまり、彼らは何をしているのかを知っています。したがって、app/min-libs/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/cat.js に移動すると、問題の行は次のように表示されます。
これはコメントですか、それともこの NPM モジュールの所有者は極秘の禁じられた JavaScript テクニックを知っていますか?
gruntjs - grunt: uglify が警告を生成した後の jshint
jshint/uglify と grunt を使ったのはこれが初めてであることに注意してください。
私は(簡潔にするために)2つのテストJSファイルを持っています:
と
私の grunt ファイルは多くのビルド タスクを実行しますが、基本的には jshint を 2 回実行します。
ソース(上記)のjshintはうまく機能しますが、uglifyがいくつかのセミコロンを削除したため、jshintポスト「ビルド」は失敗したようです。
私のうなり声ファイルの関連部分(参照用):
そして、実行される私の単調なタスクは本質的に次のとおりです(ここでも、例のために省略します):
jshint:source
扱いはうまくいきますが、そうでjshint:dist
はなく、セミコロンの欠落について不平を言います。
醜いスクリプト(参照用)は次のとおりです。
ご覧のとおり、両方の console.log ステートメントでセミコロンが削除されています。安全なようです。uglify がこれを行った理由と、jshint が不平を言っている理由も理解できます。
理想的には、セミコロンを残すように uglify を変更したいと思います (セミコロン警察から怒りを得るかもしれませんが) 理想的には、両方のオプションを確認したいと思います - jshint にセミコロンの問題を無視させますが、また、それを残すために醜くなっています。
どんな助けでも感謝します!
乾杯、テリー
javascript - grunt usemin と rev を使用しながら SourceMaps を醜くする
javascript エラーをサーバーに記録したいのですが、縮小された JS コードではスタックトレースが役に立ちません。そこで、GetsentryまたはRollbarを使用して適切なスタック トレースを表示することを考えていましたsourcemaps
。しかし、そもそもソースマップを作成するのに苦労しています。
このエラーが発生しています
「src ファイルが空だったため、宛先 (_build/js/app.js) が書き込まれませんでした。」
ソース マップが正しく作成されると、別の問題が発生します。つまりrev
、ファイルの名前が変更されます。また、縮小されていない連結ファイルを残す必要があります。
以下は私の gruntfile.js です (いくつかのビットを削除しました)。
アップデート
@Andyのソリューションを試してみましたが、それでも同じエラーが表示"Destination (_build/js/app.js) not written because src files were empty."
され、ビルド中に以下のようにも表示されます
dest
名前の由来は不明。私の出力フォルダは_build
.
UPDATE2:
より良い解決策については、以下のリンクを参照してください
https://stackoverflow.com/a/20574196/148271
gruntjs - ソースマップをマージする方法
私は Grunt を使用してプロジェクトを構築しています。作成された JS ファイルを uglify してから、既に縮小されているライブラリと連結します。
縮小されたライブラリには、既にソースマップがあります。
それらを、オーサリングされた JS ファイルに対して uglify によって生成されたものとマージすることは可能ですか?
最終的なapp.js
ファイルは、次のような sourcemap コメントで終わるコード ブロックで構成されます。
それは縮小された->オリジナルのマッチングを台無しにします。ランダムなファイルと行は、元のファイルの別の場所にあるコードに関連付けられています。
別のファイルを使用せずにできることはありますか?
ありがとう。
javascript - Uglify 解析エラーをデバッグするにはどうすればよいですか?
私はJSファイルを醜くしていますが、取得し始めました
これを追跡するために必要なデバッグ手順は何ですか?
言うまでもなく、「名前」と「(a)」を検索するなどの明白なことを試しましたが、どちらもファイルには表示されません。私の入力ファイルは美しい JS であるため、「line:1 col: 17726」が何を参照しているのかを確認することも役立ちます。
javascript - 作成されたソース マップは、相対パスではなくシステム パスを指しています
UglifyJS2を使用して、JavaScript ソース ファイルを 1 つの大きな縮小ファイルに縮小しています。私が使用する関連するコードは次のとおりです。
minfile 自体には、ソース ファイルへの絶対パスが含まれています。
問題は、私が渡しているソース ファイルが公にアクセスできないことです。それらは minfile にコンパイルされるだけで、minfile だけにアクセスできます。したがって、Chrome (私の場合) はhttp://mydomain.com/path/to/folder/jquery/js/jquery.js
ローカル fs のファイルを読み取る代わりにロードしようとするため、ソース マップは無意味に見えます。
私は何を間違っていますか?