webpack - dev - server 설정
9152 단어 webpack
webpack , 。 webpack api, webpack api ,
, 。 webpack-dev-server 。webpack-dev-server
, nginx, express , , F5
。 , :
프로젝트 디 렉 터 리 구조
webpack
build
webpack.pro.conf.js
src
js
css
img
index.html
package.json
package-lock.json
2. 설치 에 필요 한 가방
npm install webpack wepback-cli webapck-dev-server html-webpack-plugin --save-dev
"webpack": "^4.16.2" "webpack-cli": "^3.1.0" "webpack-dev-server": "^3.1.5"
"html-webpack-plugin": "^3.2.0"
웹 팩 4 는 웹 팩 뿐만 아니 라 웹 팩 - cli 도 설치 해 야 합 니 다. 웹 팩 - dev - server 는 로 컬 서 비 스 를 시작 하 는 패키지 입 니 다. html - webpack - plugin
웹 팩 의 플러그 인 입 니 다. 홈 페이지 를 사용자 정의 할 수 있 습 니 다. 구체 적 으로 뒤에 말씀 드 리 겠 습 니 다.
3. webpack. pro. conf. js 파일 코드
var path = require("path");
var webpack = require("webpack");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode:"development",
entry:{
app:"./src/js/main.js"
},
output:{
filename: "bundle.js",
path:path.resolve(__dirname,"../dist"),
//path.resolve nodejs , nodejs api
},
devServer:{
contentBase:false,
// contentBase, contentBase bundle.js ,
// , dist , false.
host:'localhost',
port:'8888',
inline:true,//webpack
watchOptions: {
aggregateTimeout: 2000,//
poll: 1000//
},
compress:true,// gzip
historyApiFallback:true,// index.html
hot:true,// , new webpack.HotModuleReplacementPlugin()
open:true,
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template:"index.html",
title:'index',
inject: true
}),
// new webpack.NamedModulesPlugin(),
// HMR shows correct file names in console on update.
// new webpack.NoEmitOnErrorsPlugin()
]
}
HtmlWebpackPlugin 플러그 인 template 는 사용 할 템 플 릿 입 니 다. 템 플 릿 은 선택 한 html 파일 로 개발 에 필요 한 html 를 생 성 합 니 다. 이 템 플 릿 은 index. html 코드 와 같이 설정 할 수 있 습 니 다.
<div id="app"/>
titile , HtmlWebpackPlugin title, HtmlWebpackPlugin 。 ,
head,body js, inject 。
loader,loader es6,stylus,less , , loader
。
</code></pre>
<hr/>
<p> 、 loader</p>
<pre><code><span class="hljs-tag">module</span>: <span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">rules</span>:<span class="hljs-value"> [
{
test:/\.js$/,
use:[
<span class="hljs-string">'babel-loader'</span>
],
include:path.<span class="hljs-function">resolve(__dirname,<span class="hljs-string">"../src"</span>)</span>,
exclude:path.<span class="hljs-function">resolve(__dirname,<span class="hljs-string">"../node_modules"</span>)</span>
</span></span></span>},
<span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">test</span>:<span class="hljs-value"> /\.(png|jpg|gif)$/,
use:[
{
loader: <span class="hljs-string">"url-loader"</span>,
options: {
limit:<span class="hljs-number">10000000</span>
</span></span></span>}
}
]
},
<span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">test</span>:<span class="hljs-value">/\.css$/,
use:[
{
loader: <span class="hljs-string">"style-loader"</span>
</span></span></span>},
<span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">loader</span>:<span class="hljs-value"><span class="hljs-string">"css-loader"</span>
</span></span></span>}
]
},
<span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">test</span>:<span class="hljs-value">/\.styl/,
use:[
{
loader: <span class="hljs-string">"style-loader"</span>
</span></span></span>},
<span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">loader</span>:<span class="hljs-value"><span class="hljs-string">"css-loader"</span>
</span></span></span>},
<span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">loader</span>:<span class="hljs-value"><span class="hljs-string">"stylus-loader"</span>
</span></span></span>}
]
},
<span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">test</span>:<span class="hljs-value">/\.vue/,
use:[
{
loader:<span class="hljs-string">'vue-loader'</span>
</span></span></span>}
]
}
]
},</code></pre>
<p> rules , loader ,test , loader ,use loader ,loader <br/> loader,include loader ,exclude 。options 。 <br/> loader, loader,<strong> loader , 。</strong> .styl(stylus) , stylus css, <br/> css style-loader html 。</p>
<p> vue , vue-loader <br/> npm install vue-loader –save-dev (–save-dev package.json devDependencies ) <br/> const VueLoaderPlugin = require(‘vue-loader/lib/plugin’); <br/> plugins new VueLoaderPlugin() 。</p>
<hr/>
<p> 、 resolve</p>
<pre><code> resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$':"vue/dist/vue.esm.js",
'@':path.resolve(__dirname,"../src")
}
}
</code></pre>
<p>extensions , : import vue from ‘vue.js’ import vue from ‘vue’ <br/> alias , 。</p>
<hr/>
<p> ! , ! ! </p>
</div>
</div>
</div>
</div>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qiita API v2를 Ajax에서 사용하기위한 webpack 설정 (로컬 개발 환경 전용)에서는 Qiita의 기사 목록, 사용자 세부 정보, 기사를 '좋아요'한 사람 목록 및 재고가 있는 사람 목록을 검색할 수 있습니다. Qiita 화면에서 기사를 재고한 사람을 볼 수 없기 때문에 API를 통해 기사를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.