使用 Webpack 打造 vue - todo 應用實踐( 二 )

咱們接着前面的第一篇繼續搭建css

使用 Webpack 打造 vue - todo 應用實踐( 一 )html

此次咱們要藉助於一個很是好的工具來開發,webpack-dev-server來開發。vue

安裝
cnpm install webpack-dev-server cross-env --save-dev
// cross-env 包是一個方便處理不一樣系統下的 process.env 的工具。這樣咱們就不用根據當前不一樣的系統來設置不一樣的環境變量了。
使用
// package.json
// 在scirpt中設置兩個 npm 命令
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "cross-env NODE_ENV=production webpack --config webpack.config.js",                // 用於最後打包上線用
    "dev": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.js"        // 用於平時開發用
  }
// cross-env NODE_ENV=production cross-env 對 NODE_ENV 進行處理,在這裏咱們爲 NODE_ENV 設置了兩個變量,一個是development(開發)一個是production(生產)。
配置
// webpack.config.js
const path = require('path')
const isDev = process.env.NODE_ENV === 'development'
const htmlWebpackPlugin = require('html-webpack-plugin')        // 用於生成 dist 下的 html
const webpack = require('webpack')
const config = {
  mode: 'development',
  target: 'web',                    
  entry: path.join(__dirname, 'src/index.js'),
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
      {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader'
        ]
      },
      {
        test: /\.(png|jpg|gif|svg|jpeg)$/,
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 30000,
              name: '[name]-[hash].[ext]'
            }
          }
        ]
      },
      {
        test: /\.styl$/,
        use: [
          'style-loader',
          'css-loader',
          'stylus-loader'
        ]
      }
    ]
  },
  plugins:[                                                            // 咱們須要用到的一些插件
    new htmlWebpackPlugin(),
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: isDev ? '"development"' : '"production"'             // 經過 process.env 咱們能夠獲取到 NODE_ENV 的值
      }
    })
  ]
}
if (isDev) {
  config.devServer = {                                                 // devserver的配置
    port: 8000,
    host: 'localhost',
    overlay: {
      error: true
    },
    open: true,                                                       // 自動打開瀏覽器
    hot: true
  }
  config.plugins.push(
    // 這些插件的做用是,熱跟新模式下,若是修改了代碼,那麼試圖會無刷新從新渲染
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoEmitOnErrorsPlugin()
  )
}

module.exports = config;
npm運行
npm run dev
// i 「wds」: Project is running at http://localhost:8000/
// i 「wds」: webpack output is served from /
// i 「wdm」: wait until bundle finished: /
// ...
  • 這樣瀏覽器就會自動打開。你還能夠對的 devserver 進行其餘配置。
未完待續(小編正在急稿中~~)
相關文章
相關標籤/搜索