Youtube Clone Coding (8. webpack)
14986 ワード
Webpackはnodeです。jsでbabelのような役を演じます。
Webpack、Webpack-cli devDependenciesを使用してインストール
srcでclient/js/mainを使用します.jsファイルを作成します.
webpack.config.jsファイルの作成
webpack.config.jsのコードは以前の構文で書きます.
entry:処理するファイルのパス
mode:開発段階、開発完了段階、生産
出力:成果物
filename:これに基づいて、私たちが納品するファイル名を入力します.
path:私たちの成果物ファイルをどこに保存するかを指定します(このパスは絶対パス(完全パス)でなければなりません!)
rules:各ファイルタイプに基づいて、どのような変換を行うかを決定します.
-複数のルールがある可能性があるので、それを並べます.
-test:変換するファイル(このコースでjsファイルをすべて変換するコードです)
-use:どのloaderで変換するか(このコースではbabel-loaderを使用します)
−babel−loaderを使用するためにはnpm i babel−loaderが必要である.
-クリーンアップ:babel-loaderを使用してjsファイルを変更します.
const path = require("path");
module.exports = {
entry: "./src/client/js/main.js",
mode: "development",
output: {
filename: "main.js",
path: path.resolve(__dirname, "assets", "js"),
},
module: {
rules: [
{
test: /\.js$/,
use: {
loader: "babel-loader",
options: {
presets: [["@babel/preset-env", { targets: "defaults" }]],
},
},
},
],
},
};
ブラウザでassetsファイルを読み込む
スクリプトをpugに書き込む
webpack.config.jsの実行
次のコードのため、npm run assetsはwebpackを実行できます.
実行時、assets/js/main.jsファイルの作成→私たちが書いたコードを変換するコードを含む
"assets": "webpack --config webpack.config.js"
scssをcssに変換
loaderは逆の順序で実行されます.
{
test: /\.scss$/,
use: ["style-loader", "css-loader", "sass-loader"],
},
MiniCssExtractPluginを使用してjsファイルとcssファイルを分離
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const path = require("path");
module.exports = {
entry: "./src/client/js/main.js",
mode: "development",
plugins: [
new MiniCssExtractPlugin({
filename: "css/styles.css",
}),
],
output: {
filename: "js/main.js",
path: path.resolve(__dirname, "assets"),
},
module: {
rules: [
{
test: /\.js$/,
use: {
loader: "babel-loader",
options: {
presets: [["@babel/preset-env", { targets: "defaults" }]],
},
},
},
{
test: /\.scss$/,
use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"],
},
],
},
};
cssをnpm run資産を引き続き使用してwebpackを移行
watch:true→初期構築後、webpackは解析ファイルの変更を監視し続けます.
clean:true→構築で作成したファイルのみを表示し、古いファイルは表示されません.
module.exports = {
entry: "./src/client/js/main.js",
mode: "development",
watch: true,
plugins: [
new MiniCssExtractPlugin({
filename: "css/styles.css",
}),
],
output: {
filename: "js/main.js",
path: path.resolve(__dirname, "assets"),
clean: true,
},
Webpack関連ファイルの保存時にサーバを再起動しない
ignore→ignoreで設定したファイルを無視することを示します
exec→検出時に実行するコマンド
{
"ignore": ["webpack.config.js", "src/client/*", "assets/*"],
"exec": "babel-node src/init.js"
}
Nodemon/webpackは、実行時に対応するjsonファイルを検索して実行するため、次のように簡略化できます.
"scripts": {
"dev:server": "nodemon",
"dev:assets": "webpack"
},
Reference
この問題について(Youtube Clone Coding (8. webpack)), 我々は、より多くの情報をここで見つけました https://velog.io/@abc5259/Youtube-Clone-Coding-8.-webpackテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol