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

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

新規登録して質問してみよう
ただいま回答率
85.35%
コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

1650閲覧

webpackでexport functionがビルド出来ない

eslint

総合スコア18

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2021/08/12 11:06

編集2021/08/12 11:10

前提・実現したいこと

webpackを用いて以下のTypeScriptファイルtest.tsからコンパイルされたJavaScriptのファイルtest.jsが得たいです。

  • test.ts

TypeScript

1export function testFun(): void{ 2 console.log('test'); 3}

得られたJavaScriptのファイルについて以下のように用いたいです。

JavaScript

1import {testFun} from 'test.js'; 2testFun(); // test! 3 4const t = await import('test.js'); 5t.testFun(); // test!

発生している問題・エラーメッセージ

webpackでビルドしたところ、以下のように出力ファイルが空となってしまいます。

JavaScript

1(()=>{"use strict"})();

該当のソースコード

  • test.ts

TypeScript

1export function testFun(): void{ 2 console.log('test'); 3}

試したこと

tscによるコンパイルでは、以下のように問題なくexport functionが出力されました。

JavaScript

1export function testFun() { 2 console.log('test'); 3}

補足情報

設定ファイルは以下のようにしています。

  • package.json

json

1{ 2 "name": "test", 3 "scripts": { 4 "t": "tsc", 5 "w": "webpack" 6 }, 7 "devDependencies": { 8 "ts-loader": "^9.2.5", 9 "webpack": "^5.50.0", 10 "webpack-cli": "^4.7.2" 11 } 12}
  • tsconfig.json

json

1{ 2 "compilerOptions": { 3 "target": "es2015", 4 "module": "es2015", 5 } 6}
  • webpack.config.js

JavaScript

1module.exports = { 2 mode: "production", 3 entry: './test.ts', 4 output: { 5 filename: 'test.js', 6 }, 7 module: { 8 rules: [{ 9 test: /.ts$/, 10 use: 'ts-loader' 11 }] 12 }, 13 resolve: { 14 extensions: ['.ts', '.js'] 15 } 16} 17

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

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

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

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

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

hoshi-takanori

2021/08/13 02:42

たぶん、普通に webpack すると独立したプログラムとみなされて、呼ばれてない関数は捨てられるのでは。 ライブラリ用の設定が必要な気がします。(細かいことはよく分かりませんが…。) https://qiita.com/jkr_2255/items/283bc12dd07bc237179e
guest

回答1

0

自己解決

webpackの設定ファイルを以下のように修正することで解決しました。参考

  • webpack.config.js

JavaScript

1module.exports = { 2 mode: "production", 3 entry: './test.ts', 4 output: { 5 filename: 'test.js', 6 library: { 7 type: 'module', 8 }, 9 }, 10 module: { 11 rules: [{ 12 test: /.ts$/, 13 use: 'ts-loader', 14 }], 15 }, 16 resolve: { 17 extensions: ['.ts', '.js'], 18 }, 19 experiments: { 20 outputModule: true, 21 }, 22}

投稿2021/08/14 11:31

eslint

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問