天天看點

webpack 建構簡單的vue項目

---恢複内容開始---

webpack主要執行流程:

入口→loader處理→出口

// webpack.config.js 檔案:
const path = require('path') // 引入path子產品
module.exports = {
  "entry": "./src/main.js",  // 入口檔案
  "output": {
    "filename": 'bundle.js', // 打包後檔案名字
    "path": path.resolve(__dirname, "dist"),  // 出口檔案路徑
    "publicPath": "/dist" // 虛拟打包後檔案路徑。熱替換時有用。打封包件不寫入磁盤,存在虛拟檔案夾中,以便于修改檔案後及時回報在網頁上。
  },
  "module": { 
    "loaders":[{
      "test": /\.css$/, // css檔案需要style-loader,css-loader
      "loader": ["style-loader","css-loader"],
      "exclude": '/node_modules' // 不需要編譯node_modules
    },{
      "test": /\.js$/,
      "loader": 'babel-loader', // js檔案使用babel-loader 轉換。
      "exclude": '/node_modules'
    },{
      "test": /\.vue$/, // 遇到vue檔案使用vue-loader。vue-loader需要依賴其他loader 下載下傳後會有提示
      "loader": 'vue-loader',
      "exclude": '/node_modules'
    }]
  },
  resolve: {
    alias: { // 别名設定
      'vue$': 'vue/dist/vue.esm.js', // 運作時建構必用。
        '@': path.resolve('src') // @代表src目錄
    }
  },
  devServer: { // 伺服器設定
    // contentBase: '', 這個鍵 主要作用是靜态伺服器入口檔案夾。如果不設定,相當于項目目錄。如果有index.html 會直接找到index.html并且打開。
    hot: true, // 熱切換
    historyApiFallback: true,  // 單頁應用找不到時復原到index.html
    inline: true
  }
}      
// 多檔案入口      

  const HtmlWebpackPlugin = require('html-webpack-plugin') // 引入html生成插件

 "entry": {
    "first":"./src/entry/first.js", // key為檔案名,對應出口[name].js 中的name
    "second": './src/entry/secend.js' // value 為入口檔案路徑。
  },
  plugins: [ 
     new HtmlWebpackPlugin ({ // 這個插件能在打包的時候,自動生成html檔案,并且放入出口path中。并且sript src 引入所有打包的js檔案。
      filename: 'second.html', // 生産的html檔案名字。
      // template: 'test.html', 
      inject: true
    }),
    new HtmlWebpackPlugin({ // 2次執行個體化,生成2個html檔案
      filename: 'first.html',
      inject: true
    })
  ],
  "output": {
    "filename": '[name].js', // 出口檔案名字,對于入口的key值
    "path": path.resolve(__dirname, "./dist"),
    "publicPath": "/dist"
  },      
// package.json  
// 這兒有了webpack,不再需要main字段。設定scripts字段。這兒用npm run dev 可運作dev鍵 後面的代碼。      
"scripts": {
    "dev": "webpack-dev-server --inline --hot", // 啟動webpack調試伺服器,隻重新渲染修改部分,修改後立即重新整理。
    "build": "webpack -p" // webpack打包,并且檔案壓縮檔案。
  },      
// .babelrc 
{
   presets:['stage-2']  // 這兒stage 一共5個階段,stage-5 不存在,為es2015 ,stage-0 最高,階段數字越小,技術越新,但是新技術不穩定,可能未來會被淘汰。一般選stage-2
}
          

現在就可以用npm run dev 啟動調試,npm run build 啟動打包。

---恢複内容結束---

繼續閱讀