【webpack4.0】---base.config.js基本配置(五)


一、創建項目初始化

1、初始化項目npm init -y

2、創建 src (用來存放開發環境的代碼)文件夾。  config (用來存放webpack的配置項)文件夾

3、安裝webpack  Webpack-cli

 

二、base.config.js文件

  • config文件夾下創建base.config.js

1、基本配置

constpath=require("path");

//定義入口文件路徑和出口文件路徑
constPATH={
   app:path.join(__dirname,"../src/main.ts"),
   build:path.join(__dirname,"../dist")
}

module.exports={
   //入口文件路徑
   entry:{
       app:PATH.app
  },
   output:{
       //導出后文件的名稱
       filename:process.env.NODE_ENV!='production'?"js/[name].js":"js/[name].[hash:8].js",
       //出口文件的路徑
       path:PATH.build
  },
   resolve:{
        //優先引入的后綴文件
        extensions:['.ts','.tsx','.js'],
        //配置別名
        alias:{}
  }
}

三、html-webpack-plugin

1、安裝

cnpm  install   html-webpack-plugin  -D

 

2、使用

const   HtmlWebpackPlugin =require("html-webpack-plugin");
module.exports={
   plugins:[
       newHtmlWebpackPlugin({
           template:"../index.html",
           filename:"index.html",
           title:"vue"
      })
  ]
}

 

四、loader處理JS文件

1、安裝

cnpm   install  -D   @babel/corebabel-loader    @babel/preset-env  @babel/preset-react    @babel/plugin-transform-runtime   @babel/polyfill

 

2、處理JS配置

module:{
       rules:[
          {
               test:/\.js$/,
               exclude:path.join(__dirname,"../node_modules"),
               loader:"babel-loader"
          }
      ]
  },

 

3、根目錄下創建.babelrc文件

{
   "presets": [
    [
       "@babel/preset-env",
      {
         "targets": {
           "browsers": ["last 2 versions"]
        }
      }
    ]
  ],
   "plugins": ["@babel/plugin-transform-runtime"]
}

 

五、loader處理圖片和字體圖標

1、安裝

cnpm  install  file-loader  url-loader  -D

 

2、基本使用

module.exports={
   module:{
       rules:[
          {
               test:/\.(png|jpg|gif|svg)$/,
               loader: 'file-loader',
               options: {
                   name: '[name].[ext]?[hash]',
                   publicPath: 'assets',
              }
          },
          {
               test: /\.(eot|svg|ttf|woff|woff2)$/,
               use: [
                  {
                       loader: 'file-loader',
                       options: {
                           name: 'fonts/[name].[hash:8].[ext]'
                      }
                  }//項目設置打包到dist下的fonts文件夾下
              ]
          },
      ]
  }
}

七、loader處理ts文件

1、安裝

cnpm  install   ts-loader   -D

2、基本使用

module.exports={
   module:{
       rules:[
          {
               test: /\.tsx?$/,
               loader: 'ts-loader',
               exclude: /node_modules/,
               options: {
                   appendTsSuffixTo: [/\.vue$/]
              }
          },
      ]
  },

}

3、ts配置文件 根目錄創建tsconfig.json

{
   "compilerOptions": {
     "experimentalDecorators": true, //開啟裝飾器@ (修飾器本質就是編譯時執行的函數)
     "strict": false, //啟用所有嚴格類型檢查選項
     // 指定生成哪個模塊系統代碼
     "module": "es2015",
     "moduleResolution": "node",
     "target": "es5",//編譯目標平台
     "allowJs":true,//允許編譯javascript文件
     "noImplicitAny": false, // 在表達式和聲明上有隱含的'any'類型時報錯。
     "allowSyntheticDefaultImports": true,
     "lib": [
       "es5",
       "es2015",
       "es2016",
       "es2017",
       "dom"
    ]
  },
   "include": ["./**/*.ts"]
}

4、ts識別vue文件 根目錄下創建sfc.d.ts

/**
* 告訴 TypeScript *.vue 后綴的文件可以交給 vue 模塊來處理
* 而在代碼中導入 *.vue 文件的時候,需要寫上 .vue 后綴。
* 原因還是因為 TypeScript 默認只識別 *.ts 文件,不識別 *.vue 文件
*/
declaremodule"*.vue"{
   importVuefrom'vue'
   exportdefaultVue
}

 

八、baset.config.js完整代碼

constpath=require("path");
constHtmlWebpackPlugin =require("html-webpack-plugin");
constVueLoaderPlugin=require('vue-loader/lib/plugin')
//定義入口文件路徑和出口文件路徑
constPATH={
   app:path.join(__dirname,"../src/main.ts"),
   build:path.join(__dirname,"../dist")
}

module.exports={
   //入口文件路徑
   entry:{
       app:PATH.app
  },
   output:{
       //導出后文件的名稱
       filename:process.env.NODE_ENV!='production'?"js/[name].js":"js/[name].[hash:8].js",
       //出口文件的路徑
       path:PATH.build
  },
   resolve:{
        //優先引入的后綴文件
        extensions:['.ts','.tsx','.js'],
        //配置別名
        alias:{}
  },
   module:{
       rules:[
          {
               test:/\.js$/,
               exclude:path.join(__dirname,"../node_modules"),
               loader:"babel-loader"
          },
          {
               test:/\.vue$/,
               exclude:path.join(__dirname,"../node_modules"),
               loader:"vue-loader"
          },
          {
               test:/\.(png|jpg|gif|svg)$/,
               loader: 'file-loader',
               options: {
                   name: '[name].[ext]?[hash]',
                   publicPath: 'assets',
              }
          },
          {
               test: /\.(eot|svg|ttf|woff|woff2)$/,
               use: [
                  {
                       loader: 'file-loader',
                       options: {
                           name: 'fonts/[name].[hash:8].[ext]'
                      }
                  }//項目設置打包到dist下的fonts文件夾下
              ]
          },
          {
               test: /\.tsx?$/,
               loader: 'ts-loader',
               exclude: /node_modules/,
               options: {
                   appendTsSuffixTo: [/\.vue$/]
              }
          },
      ]
  },
   plugins:[
       newHtmlWebpackPlugin({
           template:"./index.html",
           filename:"index.html",
           title:"vue"
      }),
       newVueLoaderPlugin()
  ]
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM