webpack の環境を構築してみる
参考:webpack 4 入門 webpackの最大の特徴は「モジュールバンドラ」を利用して、複数のjsファイルを1つのファイル「bundle.js」にまとめる。
├── node_modules
├── package.json
├── public
│ ├── index.html
│ └── js
│ └── bundle.js
├── src
│ └── js
│ ├── app.js
│ └── modules
│ ├── add-calculator.js
│ └── tax-calculator.js
└── webpack.config.js
上記の場合「app.js」「add-calculator.js」「tax-calculator.js」をビルドして「bundle.js」にまとめます。
※NodeJS, npm, yarn などは解説省略
$ yarn init --yes
yarn init v1.21.1
warning The yes flag has been set. This will automatically answer yes to all questions, which may have security implications.
success Saved package.json
✨ Done in 0.04s.
$ yarn add webpack webpack-cli webpack-dev-server --dev
var path = require('path');
module.exports = {
entry: "./src/js/app.js",
output: {
path: path.join(__dirname, 'public/js'),
filename: 'bundle.js',
},
resolve: {
extensions: ['.js', '.ts', '.svg']
},
module: {
rules: [{
test: /\.js$/,
use: [{
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}],
}, {
test: /\.ts$/,
use: [{
loader: 'ts-loader',
options: {
compilerOptions: {
declaration: false,
target: 'es5',
module: 'commonjs'
},
transpileOnly: true
}
}]
}, {
test: /\.svg$/,
use: [{
loader: 'html-loader',
options: {
minimize: true
}
}]
}]
}
}
entry:コンパイルするメインJSファイルパス(エントリーポイント)
output:出力するメインJSファイルのパス 最初に require した path を利用して最終的に「public」ディレクトリに「bundle.js」を書き出す
require , importするファイル拡張子を省略設定
ビルドする際、利用するモジュールを設定 babel-loader: Bableに対応する
次世代 EcmaScript で書かれたJSを、サポートしていないブラウザでも動くJSに変換
ts-loader:TypeSceiptに対応する
$ yarn install
yarn install v1.21.1
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.12s.
$ mkdir src
export default function addCalculator(number1 ,number2) {
return number1 + number2;
}
import addCalculator from './modules/add-calculator';
import taxCalculator from './modules/tax-calculator';
var item1_price = 100;
var item2_price = 300;
var total_price = addCalculator(item1_price, item2_price);
var tax = 0.1;
var tax_price = taxCalculator(total_price, tax);
window.onload = function() {
document.getElementById('calculate-result').innerHTML = tax_price;
};
export default function taxCalculator(price ,tax) {
return Math.round(price * (1 + tax));
}
$ yarn run webpack
node_modules のパスをbash に登録することで、webpack コマンドを直接利用できる
$ vi ~/.bash_profile
export PATH=$PATH:./node_modules/.bin
$ source ~/.bash_profile