W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
如果你在開發(fā)一個更加高級的項目,并且使用 Vagrant 來實現(xiàn)在虛擬機(jī)(Virtual Machine)上運行你的開發(fā)環(huán)境,那你可能會需要在虛擬機(jī)中運行 webpack。
首先,確保 ?Vagrantfile
? 擁有一個靜態(tài) IP。
Vagrant.configure("2") do |config|
config.vm.network :private_network, ip: "10.10.10.61"
end
然后,在項目中安裝 ?webpack
?、?webpack-cli
?、?@webpack-cli/serve
? 和 ?webpack-dev-server
?;
npm install --save-dev webpack webpack-cli @webpack-cli/serve webpack-dev-server
確保提供一個 ?webpack.config.js
? 配置文件。如果還沒有準(zhǔn)備,下面的示例代碼可以作為起步的最簡配置:
module.exports = {
context: __dirname,
entry: './app.js',
};
然后,創(chuàng)建一個 ?index.html
? 文件。其中的 script 標(biāo)簽應(yīng)當(dāng)指向你的 bundle。如果沒有在配置中指定 ?output.filename
?,其默認(rèn)值是 ?bundle.js
?。
<!DOCTYPE html>
<html>
<head>
<script src="/bundle.js" charset="utf-8"></script>
</head>
<body>
<h2>Hey!</h2>
</body>
</html>
注意,你還需要創(chuàng)建一個 ?app.js
? 文件。
現(xiàn)在,我們啟動服務(wù)器:
webpack serve --host 0.0.0.0 --client-web-socket-url ws://10.10.10.61:8080/ws --watch-options-poll
默認(rèn)只允許從 localhost 訪問服務(wù)器。所以我們需要修改 ?--host
? 參數(shù), 以允許在我們的宿主 PC 上訪問。
?webpack-dev-server
? 會在包中引入一個腳本,此腳本連接到 WebSocket,這樣可以在任何文件修改時,觸發(fā)重新加載應(yīng)用程序。 ?--client-web-socket-url
? 標(biāo)志可以確保腳本知道從哪里查找 WebSocket。默認(rèn)情況下,服務(wù)器會使用 ?8080
? 端口,因此也需要在這里指定。
?--watch-options-poll
? 可以確保 webpack 能夠檢測到文件更改。webpack 默認(rèn)會監(jiān)聽文件系統(tǒng)觸發(fā)的相關(guān)事件,但是 VirtualBox 使用默認(rèn)配置會有許多問題。
現(xiàn)在服務(wù)器應(yīng)該能夠通過 ?http://10.10.10.61:8080
? 訪問了。修改 ?app.js
?,應(yīng)用程序就會實時重新加載。
為了更好的模擬類生產(chǎn)環(huán)境(production-like environment),還可以用 nginx 來代理 ?webpack-dev-server
?。
在你的 nginx 配置文件中,加入下面代碼:
server {
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
error_page 502 @start-webpack-dev-server;
}
location @start-webpack-dev-server {
default_type text/plain;
return 502 "Please start the webpack-dev-server first.";
}
}
?proxy_set_header
? 這幾行配置很重要,因為它們能夠使 WebSocket 正常運行。
然后 ?webpack-dev-server
? 啟動命令可以修改為:
webpack serve --client-web-socket-url ws://10.10.10.61:8080/ws --watch-options-poll
現(xiàn)在只能通過 ?127.0.0.1
? 訪問服務(wù),這點關(guān)系不大,因為 ngnix 能夠使得你的 PC 電腦能訪問到服務(wù)器。
我們能夠從靜態(tài) IP 訪問 Vagrant box,然后使 ?webpack-dev-server
? 可以公開訪問,以便瀏覽器可以訪問到它。然后,我們解決了 VirtualBox 不發(fā)送到文件系統(tǒng)事件的常見問題,此問題會導(dǎo)致服務(wù)器無法重新加載文件更改。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: