webpack +vue开发(3)

webpack的一些有用的命令

webpack --display-modules

在终端显示这些module,另外一个推荐使用

webpack --display-modules --display-reasons

可以把我们在哪里require都显示出来并且用哪些loader处理

webpack -d //debug
webpack -p //执行一些优化将我们的文件压缩
webpack --watch //或者
webpack -w

-w是缩写这个命令使我们不用每次更改文件都去执行webpack,比如我们修改我们的css文件 把字体颜色改为#fff 保存我们直接刷新浏览器就可以了,嘻嘻。

但是我们还是得去刷新浏览器,webpack还提供了热加载,首先安转webpack的服务

npm install webpack-dev-server --save-dev

这里可以配置的参数

devserver配置选项 功能描述
contentBase 默认webpack-dev-server会为根文件夹提供本地服务器,如果想为另外一个目录下的文件提供本地服务器,应该在这里设置其所在目录(本例设置到“public"目录)
port 设置默认监听端口,如果省略,默认为”8080“
inline 设置为true,当源文件改变时会自动刷新页面
colors 设置为true,使终端输出的文件为彩色的
historyApiFallback 在开发单页应用时非常有用,它依赖于HTML5 history API,如果设置为true,所有的跳转将指向index.html
module.exports = {
    devtool:"sourcemap",
    entry:"./js/entry.js",
    output:{
        filename:"bundle.js",
    },
    module:{
        loaders:[
            {
                test:/.css$/,
                loader:"style!css"
            },
            {
                test:/.js$/,
                loader:"babel",
                exclude:/node_modules/,
            },
            {
                test:/.vue$/,
                loader:"vue"
            }
        ]
    },
    resolve: {
      alias: {
        'vue$': 'vue/dist/vue.js'
      }
    },
    babel:{
        presets:['es2015','stage-0'],
        plugins:['transform-runtime']
    },
    devServer: {
        port:"8090",
        inline:true,
    } 
}

这里配置8090端口自动刷新页面,在终端使用命令启动服务器

webpack-dev-server --inline

直接在页面打开http://localhost:8090/更改代码你就可以看到实时刷新了,判断我们是线上环境还是线下环境,然后做一些区别:

var debug = process.env.NODE_ENV !== "production";
module.exports = {
    devtool:debug ? "sourcemap" : null,//线下才生产sourcemap
    entry:"./js/entry.js",
    output:{
        filename:"bundle.js",
    },
    module:{
        loaders:[
            {
                test:/.css$/,
                loader:"style!css"
            },
            {
                test:/.js$/,
                loader:"babel",
                exclude:/node_modules/,
            },
            {
                test:/.vue$/,
                loader:"vue"
            }
        ]
    },
    resolve: {
      alias: {
        'vue$': 'vue/dist/vue.js'
      }
    },
    babel:{
        presets:['es2015','stage-0'],
        plugins:['transform-runtime']
    },
    devServer: {
        port:"8090",
        historyApiFallback: true,
        inline: true,
        progress: true,
    },
    plugins:debug ? []:[
        new webpack.optimize.DedupePlugin(),
        new webpack.optimize.OccurrenceOrderPlugin(),
        new webpack.optimize.UglifyJsPlugin({mangle:false,sourcemap:false})
    ],
}
原文地址:https://www.cnblogs.com/longsiyuan/p/6093751.html