使用 CLI 方式配置文件(基礎)
一、基本安裝
mkdir webpack1.0 && cd webpack1.0
npm init -y (初始化問題-yes)
npm install webpack webpack-cli --save-dev
會生成package.json文件:
需要創建以下目錄結構、文件和內容:
webpack1.0
|- package.json
+ |- index.html
+ |- /src
+ |- index.js
-
調整 package.json 文件,以便確保我們安裝包是私有的(private),并且移除 main 入口。這可以防止意外發布你的代碼。
- src/index.js
function component() {
var element = document.createElement('div');
// Lodash(目前通過一個 script 腳本引入)對于執行這一行是必需的
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
return element;
}
document.body.appendChild(component());
- index.html
<!doctype html>
<html>
<head>
<title>webpack 1.0</title>
<script src="https://unpkg.com/lodash@4.16.6"></script>
</head>
<body>
<script src="./src/index.js"></script>
</body>
</html>
在此示例中,<script> 標簽之間存在隱式依賴關系。index.js 文件執行之前,還依賴于頁面中引入的 lodash。之所以說是隱式的是因為 index.js 并未顯式聲明需要引入 lodash,只是假定推測已經存在一個全局變量 _ 。
使用這種方式去管理 JavaScript 項目會有一些問題:
- 無法立即體現,腳本的執行依賴于外部擴展庫(external library)。
- 如果依賴不存在,或者引入順序錯誤,應用程序將無法正常運行。
- 如果依賴被引入但是并沒有使用,瀏覽器將被迫下載無用代碼。
讓我們使用 webpack 來管理這些腳本。
二、創建一個 bundle 文件
- 首先,我們稍微調整下目錄結構,將“源”代碼(/src)從我們的“分發”代碼(/dist)中分離出來。“源”代碼是用于書寫和編輯的代碼?!胺职l”代碼是構建過程產生的代碼最小化和優化后的“輸出”目錄,最終將在瀏覽器中加載:
webpack1.0
|- package.json
+ |- /dist
+ |- index.html
- |- index.html
|- /src
|- index.js
- 要在 index.js 中打包 lodash 依賴,我們需要在本地安裝 library:
npm install --save lodash
注意:在安裝一個要打包到生產環境的安裝包時,你應該使用 npm install --save
,如果你在安裝一個用于開發環境的安裝包(例如,linter, 測試庫等),你應該使用 npm install --save-dev
。請在 npm 文檔 中查找更多信息 。
- 可以在腳本中 import lodash:
src/index.js
+ import _ from 'lodash';
+
function component() {
var element = document.createElement('div');
- // Lodash, currently included via a script, is required for this line to work
+ // Lodash, now imported by this script
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
return element;
}
document.body.appendChild(component());
- 現在,由于通過打包來合成腳本,我們必須更新 index.html 文件。因為現在是通過 import 引入 lodash,所以將 lodash <script> 刪除,然后修改另一個 <script> 標簽來加載 bundle,而不是原始的 /src 文件:
dist/index.html
<!doctype html>
<html>
<head>
<title>Webpack1.0</title>
<!-- <script src="https://unpkg.com/lodash@4.16.6"></script> -->
</head>
<body>
<!-- <script src="./src/index.js"></script> -->
<script src="main.js"></script>
</body>
</html>
在這個設置中,index.js 顯式要求引入的 lodash 必須存在,然后將它綁定為 _(沒有全局作用域污染)。通過聲明模塊所需的依賴,webpack 能夠利用這些信息去構建依賴圖,然后使用圖生成一個優化過的,會以正確順序執行的 bundle。
可以這樣說,執行 npx webpack
,會將我們的腳本作為入口起點,然后 輸出 為 main.js
。Node 8.2+ 版本提供的 npx
命令,可以運行在初始安裝的 webpack 包(package)的 webpack 二進制文件(./node_modules/.bin/webpack
):
構建成功
構建成功,就可以在瀏覽器中打開 index.html,看到以下文本:'Hello webpack'。