66282


さまざまな環境で動作するライブラリを作っています。  
Windows の JavaScript = JScript (Windows Scripting Host = WSH)  
でも動作するような関数ライブラリを作っていてテストコードも組み込んでいます。

<https://github.com/standard-software/partsjs>

WSH は異様に古い環境なのでこれで動かすというのは非常にエッジケースで、  
こんな環境で動作確認しているユーザーはいないのかもしれないのですが

上記のParts.js の master ブランチの ver 4.6.0 では、@babel/polyfill を使っていて  
npm start コマンドで全てのテストがOKになって動きます。  
Windows で実行すると WSH でも正常に動いています。IE11は当然動きます。

develop ブランチの ver 5.0.0 beta では、  
@babel/polyfill から core-js と regenerator-runtime に移行するために  
ビルド設定をいろいろ変えてみましたが  
IE11で動くようにはできましたが、WSH だけはどうしても読み込みが失敗してしまいます。

いくつかの問題はわかっていて  
core-js はそもそも ShiftJIS あるいはアスキーの範囲ではない UTF8な文字が入っているために  
JScript が読み込みに失敗する、という状態があるようです。

Webpack でビルドした差分を比較するのが差分が多すぎて全部をつぶしきれないという  
状態になってしまっています。

私のビルドの設定に問題があって  
webpack.config や babel.config を修正すれば  
WSH でも動くようなものが作れたらすごく助かるのですが  
どなたかビルド設定に詳しい方、おわかりになる方おられましたら教えてください。

core-js でWSHやJScriptをターゲットにした出力に対応できますか？

また、そういう設定がないのなら  
@babel/polyfillを非推奨にして core-js への置き換えを促すというのは  
上位互換ではないようなので、問題があるのではないかとおもってます。

@babel/polyfillを非推奨にしないで、ということを  
babelのコミュニティに伝えたいのですが  
どちらに発信すればよいでしょうか？

稚拙な英語力なので伝わらないかもしれないですが  
とりあえず、言ってみようかなと思っています。

@babel/polyfill を非推奨となったままで  
将来的にサポートされなくなったらこまるな、と思っています。


CC BY-SA 4.0
2020-04-07T08:45:26.720
65439
2020-05-04T10:24:10.920
21047
question
javascript babeljs
@babel/polyfill が非推奨なので core-js に移行しようとしたが WSH 環境でうまく動かない


信用度が足らずコメントができないため回答に書きます。  
core-jsを実行するまでになります。リンク先のテストは試していません

* * *

JScriptでユニコードを扱うには、ファイルのエンコードをUTF-16LEにします。UTF-8, UTF-8
BOMは対応していません（ちなみにコンソールのエンコード(chcp)は関係ありません。）

以下の手順でWSHでcore-jsを動かすことはできました。

  1. core-jsを[ダウンロード](https://unpkg.com/core-js-bundle@3.6.5/minified.js)する
  2. エンコードをUTF-16LEに変更する
  3. 適当なコードをファイル末尾に追加する 
[code]    var set = new Set(["A", "B", "C", "A", "B"])

    set.forEach(function(e) {
      WScript.Echo(e)
    })
    
[/code]

  4. cscript.exe のエンジンにEdgeのエンジンを指定する  
`cscript //E:{1b7cd997-e5ff-4932-a7a6-2a9e636da385} minified.js`


CC BY-SA 4.0
2020-05-04T10:24:10.920
66282
2020-05-04T10:24:10.920
39930
65439
answer