webpack学習ノート(一)
10205 ワード
ことばを引く
最近webpackを勉強していますが、多くの知識点を発見しました.babel、coree-js、browserslistなど、これまで接触したことがありません.以前はcliを使ってプロジェクトを構築することに慣れて、多くのものは考慮しなくてもいいです.持ってきて使ってもいいです.このような私達は能力がアップすることができません.もっと多くの知識点を知ってこそ、素晴らしい先端エンジニアになれると思います.
私は大体私の学習過程を整理して、簡単に分類して、問題を解決する道を弁舌さわやかに述べています.もちろん私の勉強も完璧ではないです.引き続き努力します.
webpackを学ぶためにまず必要な基礎は:
1.node.jsとは何かを知る.
2.npmパッケージマネージャとは何か、package.jsonの常用属性の意味を知る.
この基礎の上で、私達は一歩ずつwebpackを学んで、およびどのようにwebpackを使って包装を行います.
webpack概要
webapckは先端の資源を梱包するツールで、最も核心的な機能はモジュール間の依存問題を解決することです.聞き慣れていますか?はい、そうです.AMD規格、CommonJS規格を勉強したことがあると、webpackはこれらの規範に基づいて発展したオープンソースツールであり、先端開発者がモジュール化して工程化された問題を解決します.(PS:AMD、CommunJSの仲間を知らなかったので、簡単に調べてみてください.これはjsモジュール化の基礎です.この基礎を知ってこそ、先端モジュール化を理解できます.先端工程化をもっと理解してこそ、webpackが何をしているのかが分かります.)
ここでは簡単にjsモジュール化を説明します.多くの仲間が図仔から前後端まで分離する先端工程モードに入る時、少し怖いです.先端工程とはどういう概念なのか分かりません.実は先端工程化ということです.つまり、開発中の大型ウェブアプリケーションの場合、ページの相互作用が非常に頻繁で、多くの計算、データ処理、業務コードをクライアント(ブラウザ)に置いて処理しました.こんなに多くのコードは、どのように管理とメンテナンスを行いますか?それとも違うページ
webpackはjsだけでなく、css、image、videoなどのように、フロントエンドの な を して することができます.そして、パッケージ の で を します.コード 、コード など、 なloader(プリプロセッサ)、plugis(プラグイン)を して、あなたのコードを にES 6=>ES 5、SCSS=>css などの があります. するに、webpackはすでに ツールであり、 を し、 を した 、 に できます. のことはwebpackに せます.
インストール
webpackをインストールする に、 にNode.jsがインストールされていることを する があります.もしインストールされていないなら、Node.js サイトでダウンロードしてください.(https://nodejs.org/)
まず たちのプロジェクトフォルダを します.
まずメニューを びます.インストールします.
の で、 を してインストールすることができます.プロジェクト のことを えて、Gitでバージョンコントロールとシェアを うかもしれないので、 でのインストールをオススメします.ローカルインストールを うと、webpackはnode_に されます.modulesフォルダ とdevDependencies では、プロジェクトファイルの や などに です.
webpackを うには、3つのカバンを する があります.それぞれ
1.webpack(コアパック)
2.webpack-cli( )
3.webpack-dev-server( サーバ)
webpackコアバッグは、その の り、 として わなければならないカバンです.
webpack-cli は、webpackを う に、 で するオプションを らしてくれます.もっと です.カスタマイズした のツールを って、wepback v 4.0からインストールしなければなりません.
webpack-dev-serverは が にある 、 のデバッグごとに することができません.だから、 い さのサーバーが です.
npmコマンドを します
ファイル
webpackはデフォルトで の が く に えるように を しています.webpackはプロジェクトの り の がsrc/indexであると して、dist/main.jsで を し、 で と を します.
しかし、 はプロジェクトを る に、webpackがいろいろな な を してくれます.プロジェクトのルートディレクトリでwebpack.co.nfig.jsファイルを できます.webpackは にそれを います.
ファイル
プロジェクトの がないので、さまざまな ファイルを して、いろいろな に することができます.この 、build.co nf.js、test.co nf.jsなどの のプロファイルを に することができます.package.jsonでこのような を います.
このようにすれば、 なるnpmコマンドを して、 なるプロファイルを って、 する ができます.
り と
npmの さいパートナーを っています.package.jsonにはmain があります. の を しています.mainで すjsファイルを じて、 つの (またはクラスまたは )を ます.
たちはCommon JS を じて:
webpackの り と は、これと に ています.webpackを って する は、 なくとも つの り を し、それに する を する があります.たとえば:
package.json
最近webpackを勉強していますが、多くの知識点を発見しました.babel、coree-js、browserslistなど、これまで接触したことがありません.以前はcliを使ってプロジェクトを構築することに慣れて、多くのものは考慮しなくてもいいです.持ってきて使ってもいいです.このような私達は能力がアップすることができません.もっと多くの知識点を知ってこそ、素晴らしい先端エンジニアになれると思います.
私は大体私の学習過程を整理して、簡単に分類して、問題を解決する道を弁舌さわやかに述べています.もちろん私の勉強も完璧ではないです.引き続き努力します.
webpackを学ぶためにまず必要な基礎は:
1.node.jsとは何かを知る.
2.npmパッケージマネージャとは何か、package.jsonの常用属性の意味を知る.
この基礎の上で、私達は一歩ずつwebpackを学んで、およびどのようにwebpackを使って包装を行います.
webpack概要
webapckは先端の資源を梱包するツールで、最も核心的な機能はモジュール間の依存問題を解決することです.聞き慣れていますか?はい、そうです.AMD規格、CommonJS規格を勉強したことがあると、webpackはこれらの規範に基づいて発展したオープンソースツールであり、先端開発者がモジュール化して工程化された問題を解決します.(PS:AMD、CommunJSの仲間を知らなかったので、簡単に調べてみてください.これはjsモジュール化の基礎です.この基礎を知ってこそ、先端モジュール化を理解できます.先端工程化をもっと理解してこそ、webpackが何をしているのかが分かります.)
ここでは簡単にjsモジュール化を説明します.多くの仲間が図仔から前後端まで分離する先端工程モードに入る時、少し怖いです.先端工程とはどういう概念なのか分かりません.実は先端工程化ということです.つまり、開発中の大型ウェブアプリケーションの場合、ページの相互作用が非常に頻繁で、多くの計算、データ処理、業務コードをクライアント(ブラウザ)に置いて処理しました.こんなに多くのコードは、どのように管理とメンテナンスを行いますか?それとも違うページ
のラベルの に いますか?これは つのhtmlではなく、 つの
だけを して、 のは この
の で しますか?この 、jsモジュール が み、AMDやCommunJSなどの が まれました.これらの があれば、 たちはjsとjsの の をゆっくりと できます.webpackは のモジュールを つのjs(または )のツールにパッケージ しています.これは つの
タグだけを することもできます.webpackはjsだけでなく、css、image、videoなどのように、フロントエンドの な を して することができます.そして、パッケージ の で を します.コード 、コード など、 なloader(プリプロセッサ)、plugis(プラグイン)を して、あなたのコードを にES 6=>ES 5、SCSS=>css などの があります. するに、webpackはすでに ツールであり、 を し、 を した 、 に できます. のことはwebpackに せます.
インストール
webpackをインストールする に、 にNode.jsがインストールされていることを する があります.もしインストールされていないなら、Node.js サイトでダウンロードしてください.(https://nodejs.org/)
まず たちのプロジェクトフォルダを します.
npm init -y
が わったら、webpackの サイトを きます.https://webpack.js.org/ を むのは しいパートナーがいます. の り えボタンを して、 で します. を り えたら、ナビゲーションバーの「ドキュメント」 をもう クリックし、ナビゲーションの「ガイド」ページをクリックします.この 、 のメニューには にwebpackの ガイドが れています.まずメニューを びます.インストールします.
の で、 を してインストールすることができます.プロジェクト のことを えて、Gitでバージョンコントロールとシェアを うかもしれないので、 でのインストールをオススメします.ローカルインストールを うと、webpackはnode_に されます.modulesフォルダ とdevDependencies では、プロジェクトファイルの や などに です.
webpackを うには、3つのカバンを する があります.それぞれ
1.webpack(コアパック)
2.webpack-cli( )
3.webpack-dev-server( サーバ)
webpackコアバッグは、その の り、 として わなければならないカバンです.
webpack-cli は、webpackを う に、 で するオプションを らしてくれます.もっと です.カスタマイズした のツールを って、wepback v 4.0からインストールしなければなりません.
webpack-dev-serverは が にある 、 のデバッグごとに することができません.だから、 い さのサーバーが です.
npmコマンドを します
npm install --save-dev webpack webpack-cli webpack-dev-server
はい、インストールに しました.ファイル
webpackはデフォルトで の が く に えるように を しています.webpackはプロジェクトの り の がsrc/indexであると して、dist/main.jsで を し、 で と を します.
しかし、 はプロジェクトを る に、webpackがいろいろな な を してくれます.プロジェクトのルートディレクトリでwebpack.co.nfig.jsファイルを できます.webpackは にそれを います.
const path = require('path');
module.exports = {
mode: "production", // "production" | "development" | "none" // Chosen mode tells webpack to use its built-in optimizations accordingly.
entry: "./app/entry", // string | object | array // './src'
//
// webpack
output: {
// webpack
path: path.resolve(__dirname, "dist"), // string
//
// ( Node.js path )
filename: "bundle.js", // string // 「 (entry chunk)」
publicPath: "/assets/", // string // ,url HTML
library: "MyLibrary", // string,
// (exported library)
libraryTarget: "umd", // // (exported library)
/* ( ) */
},
module: {
//
rules: [
// ( loader、 )
{
test: /\.jsx?$/,
include: [
path.resolve(__dirname, "app")
],
exclude: [
path.resolve(__dirname, "app/demo-files")
],
// ,
// test include ,
// exclude ( test include)
// :
// - test
// - include exclude
// - exclude, include
issuer: {
test,
include,
exclude
},
// issuer ( )
enforce: "pre",
enforce: "post",
// , ( )
loader: "babel-loader",
// loader,
// ,`-loader` webpack 2
// webpack 1 。
options: {
presets: ["es2015"]
},
// loader
},
{
test: /\.html$/,
use: [
// loader
"htmllint-loader",
{
loader: "html-loader",
options: {
/* ... */
}
}
]
},
{
oneOf: [ /* rules */ ]
},
//
{
rules: [ /* rules */ ]
},
// ( )
{
resource: {
and: [ /* */ ]
}
},
//
{
resource: {
or: [ /* */ ]
}
},
{
resource: [ /* */ ]
},
// ( )
{
resource: {
not: /* */
}
}
//
],
/* ( ) */
},
resolve: {
//
// ( loader )
modules: [
"node_modules",
path.resolve(__dirname, "app")
],
//
extensions: [".js", ".json", ".jsx", ".css"],
//
alias: {
//
"module": "new-module",
// :"module" -> "new-module" "module/path/file" -> "new-module/path/file"
"only-module$": "new-module",
// "only-module" -> "new-module", "only-module/path/file" -> "new-module/path/file"
"module": path.resolve(__dirname, "app/third/module.js"),
// "module" -> "./app/third/module.js" "module/file"
//
},
/* ( ) */
/* ( ) */
},
performance: {
hints: "warning", // maxAssetSize: 200000, // ( )
maxEntrypointSize: 400000, // ( )
assetFilter: function (assetFilename) {
//
return assetFilename.endsWith('.css') || assetFilename.endsWith('.js');
}
},
devtool: "source-map", // enum // (browser devtools) (meta info)
// `source-map' 。
context: __dirname, // string( !)
// webpack
// entry module.rules.loader
//
target: "web", // // bundle
// (chunk loading behavior) (available module)
externals: ["react", /^@angular\//], // / ,
serve: { //object
port: 1337,
content: './dist',
// ...
},
// webpack-serve
stats: "errors-only", // bundle
devServer: {
proxy: { // proxy URLs to backend development server
'/api': 'http://localhost:3000'
},
contentBase: path.join(__dirname, 'public'), // boolean | string | array, static file location
compress: true, // enable gzip compression
historyApiFallback: true, // true for index.html upon 404, object for multiple paths
hot: true, // hot module replacement. Depends on HotModuleReplacementPlugin
https: false, // true for self-signed, object for cert authority
noInfo: true, // only errors & warns on hot reload
// ...
},
plugins: [
// ...
],
//
/* ( ) */
}
の はwebpack サイトの「 」の の を しています. の から かるように、webpackの は に くの のようです. たちは ろの の で、 に な がありますか?ファイル
プロジェクトの がないので、さまざまな ファイルを して、いろいろな に することができます.この 、build.co nf.js、test.co nf.jsなどの のプロファイルを に することができます.package.jsonでこのような を います.
このようにすれば、 なるnpmコマンドを して、 なるプロファイルを って、 する ができます.
り と
npmの さいパートナーを っています.package.jsonにはmain があります. の を しています.mainで すjsファイルを じて、 つの (またはクラスまたは )を ます.
たちはCommon JS を じて:
const XXX = require('XXX')'
を します.webpackの り と は、これと に ています.webpackを って する は、 なくとも つの り を し、それに する を する があります.たとえば:
const path = require('path')
module.exports = {
entry: "./src/main", // string | object | array // './src'
//
// webpack
output: {
// webpack
path: path.resolve(__dirname, "dist/assets"), // string
//
// ( Node.js path )
filename: "/[name].js", // string // 「 (entry chunk)」
},
}
これらを したら、webpackに を するように すればいいです.npx webpack
ここでは、webpackとwebpack-cliを にインストールしていませんので、webpackコマンドを して することはできません.npxコマンドを ってwebpackコマンドに します.ここでは のためだけに、webpackコマンドを って することができますが、 のプロジェクト の で、 たちはこのように いません.ですから、 の では、パッケージのコマンド だけを します.また、package.jsonにおけるスクリプトコマンドは、 にwebpackをインストールする はなく、ローカルにインストールすれば いです.つまり の です.package.json
{
"scripts": {
"build":"webpack --config webpack.config.js"
}
}
npm runスクリプト を って できます.npm run build
…