美文网首页
使用webpack 构建简单的vue单页面应用

使用webpack 构建简单的vue单页面应用

作者: shibin | 来源:发表于2018-01-21 18:35 被阅读0次

准备

  • 安装依赖的插件npm i webpack cross-env style-loader css-loader postcss-loader autoprefixer scss-loader vue vue-loader url-loader file-loader babel-loader babel-core html-webpack-plugin --save-dev
  • 编写webpack配置文件(webpack.conf.js)
const webpack = require('webpack')
const {resolve} = require('path')
const htmlPlugin = require('html-webpack-plugin')
module.exports={
  target: 'web',
  entry: resolve(__dirname, './src/main.js'),
  output: {
    filename: 'buddle.js',
    path: resolve(__dirname, 'build')
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }, {
        test: /\.jsx$/,
        use: ['babel-loader']
      }, {
        test: /\.(png|jpg|jpeg|gif|svg)$/,
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 1024,
              name: 'images/[name].[ext]'
            }
          }
        ]
      },
      {
        test: /\.scss$/,
        use: [
          'style-loader',
          'css-loader', {
            loader: 'postcss-loader',
            options: {
              sourceMap: true
            }
          },
          'sass-loader'
        ]
      }
    ]
  },
  plugins:[
    new htmlPlugin(),
    plugins: [
      new webpack.DefinePlugin({
        'process.env': {
          NODE_ENV: isDev
            ? '"development"'
            : '"production"'
        }
      }),
      new htmlPlugin()
    ]
  ]
}
  • 编写入口文件main.js
import Vue from 'vue'
import App from './app.vue'
import './css/style.scss'
const root=document.createElement('div')
document.body.appendChild(root)
new Vue({
  render:(h)=>h(App)
}).$mount(root)
  • 编写app.vue
<template lang="html">
  <div>
{{text}}
  </div>
</template>

<script>
export default {
data(){
  return {
      text: 'shibin'
    }
  }  
}
</script>

<style lang="scss">

</style>
  • 编写style.scss
$nav-color: #F90;
*{
  margin: 0;
  padding: 0;
}
html,body{
    background: url('./../img/1.jpeg')no-repeat center;
    background-size:  100%;
    height:100%;
    color:
}
  • 配置.babelrc,这样就可以在应用里面使用es6的语法了
{
  "presets":[
    "env"
  ],
  "plugins":[
    "transform-vue-jsx"
  ]
}

  • 在postcss.config.js里配置postcss
const autoprefixer = require('autoprefixer')
module.exports = {
  plugins: [
    autoprefixer()
  ]
}

  • 在pockage.json里面增加build命令cross-env NODE_ENV=production webpack --config webpack.conf.js

  • 执行npm run build命令

  • 这样一个简单的vue单页面应用已经构建好了

  • 若要压缩js文件,需要安装npm i uglifyjs-webpack-plugin

const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
//  在webpack plugins 插件增加   new UglifyJsPlugin()
plugins:[
    new UglifyJsPlugin()
]
  • 如果要单独打包css文件.安装npm i extract-text-webpack-plugin
const extractPlugin = require('extract-text-webpack-plugin')
//首先在上面配置里修改scss文件的处理
{
  test: /\.scss$/,
  use: extractPlugin.extract({
    fallback: 'style-loader',
    use: [
      {
        loader: 'css-loader',
        options:{
          minimize:true
        }
      }, {
        loader: 'postcss-loader',
        options: {
          sourceMap: true
        }
      },
      'sass-loader'
    ],
      publicPath:'../'
  })
}
//在webpack plugins 插件增加
new extractPlugin({
filename:'css/[chunkhash].css'
})
  • 安装webpack-dev-server,这样我们就能实时预览项目.npm i webpack-dev-server
//在上面配置中增加devServer
devServer :{
  port: '8000',
  host: '0.0.0.0',
  overlay: {
    errors: true
  },
  open: true,
  hot: true
}
//在上面plugins配置里增加
new webpack.HotModuleReplacementPlugin(), new webpack.NoEmitOnErrorsPlugin()

  • 在package.json 增加dev命令 cross-env NODE_ENV=development webpack-dev-server --config webpack.conf.js,这样我们执行npm run dev就可以进行实时调试我们的项目了

相关文章

网友评论

      本文标题:使用webpack 构建简单的vue单页面应用

      本文链接:https://www.haomeiwen.com/subject/yxlqaxtx.html