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>

좋은 웹페이지 즐겨찾기