質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Babel

Babelは、JavaScriptの次世代仕様であるECMAScriptのコンパイラ。次世代の標準機能を用いて記述されたコードを、それらの機能に対応していないブラウザでも動作するコードに変換することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1629閲覧

Webpackでnpmリポジトリを参照する際に、Babelの有無を自動設定したい

maisumakun

総合スコア145183

ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Babel

Babelは、JavaScriptの次世代仕様であるECMAScriptのコンパイラ。次世代の標準機能を用いて記述されたコードを、それらの機能に対応していないブラウザでも動作するコードに変換することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

2グッド

2クリップ

投稿2018/08/08 02:11

前提・実現したいこと

Webpack+npm+Babelでビルドするシステムを構築する際に、一般に/node_modules/以下はBabelの対象から外します。

ただ、npmに上がっているものでも最近はES6としても使えるものが増えてきたので、package.jsonからmoduleで読み取るものはES6としてBabelに通す、mainにあるものはES5としてBabelに回さない、ということをしたいのですが、そのような設定は可能でしょうか。

試したこと

個別に指定すれば、node_modules以下の一部をBabelに通すことはできています。今回の質問は、あくまで自動で設定を切り替えられるかです。

なお、Babelの設定は.babelrcでなくてwebpack.config.jsなどでJavaScriptを動かす形でも問題ありません。

補足情報(FW/ツールのバージョンなど)

  • Babel 6.26.0
  • Webpack 3.12.0

(これより新しいバージョンならできる、という情報も歓迎します)

yakumomutsuki, set0gut1👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ただ、npmに上がっているものでも最近はES6としても使えるものが増えてきたので、package.jsonからmoduleで読み取るものはES6としてBabelに通す、mainにあるものはES5としてBabelに回さない、ということをしたいのですが、そのような設定は可能でしょうか。

ユースケースが思いつきませんでした。

一般に/node_modules/以下はBabelの対象から外します。

自分もそう思います。
node_modules 以下を Babel に通す前提は変えられないのでしょうか。
node_modules 以下のパッケージを ES5 へトランスパイルされた物を使いたという認識でよいのであれば webpack.config の resolve.mainFields フィールドを ['browser', 'main', 'module'] にはされましたか。

使いたい npm パッケージの package.json に main フィールド がない、または自前の .babelrc でトランスパイルしたいなどの意図でしたらこの回答は的はずれなので無視してください。

https://webpack.js.org/configuration/resolve/#resolve-mainfields

投稿2018/08/08 07:56

og24715

総合スコア832

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/09/02 11:40

Tree Shakingなどを行いたい関係上、「ES6モジュールがあればそちらを優先してimportしたい」という状況です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問