首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

webpack4.x连载之为不同环境书写配置文件,并配置webpack-dev-server

在目录下新增三个配置文件

如果没有建立index.html这个入口文件,

在webpack里有一个插件:html-webpack-plugin

安装插件:cnpm install html-webpack-plugin --save-dev

//是nodejs的一个基本包,用来处理路径的,在打包项目时用绝对路径,防止出错

constpath=require("path");

constwebpack= require("webpack");

//如果没有index.html入口文件的情况,可以使用这个插件

constHTMLPlugin=require("html-webpack-plugin");

//以前直接vue-loader就可以,现在必须导入这个模块,并配置这个插件才能正常编译.vue文件

constVueLoaderPlugin= require('vue-loader/lib/plugin');

module.exports={

mode:"development",

//入口文件的配置项

//path.join就是把dirname和后面的路径拼接起来,形成绝对路径

entry:path.join(__dirname,"src/main.js"),

//出口文件的配置

output:{

path:path.join(__dirname,"dist"),

filename:"bundle.js"

},

plugins: [

newVueLoaderPlugin(),

//调用html-webpack-plugin插件

newHTMLPlugin()

],

module:{

rules:[

{

test:/\.vue$/,

use:['vue-loader']

},

{

test:/\.css$/,

use:['style-loader','css-loader']

},

{

test:/\.(jpg|png|gif)$/,

use:['url-loader']

},

{

test:/\.js$/,

exclude:/node_modules/,

use: {

loader:'babel-loader',

options: {

presets:['env'],

plugins:"transform-runtime"

//include表示哪些目录中的 .js 文件需要进行 babel-loader

//exclude表示哪些目录中的 .js 文件不要进行 babel-loader

constwebpack= require("webpack");

baseWebpackConfig.mode="development";

//帮助在页面上调试代码,在项目里使用的是.vue的文件开发模式,使用的也是es6代码

//这些代码在浏览器里是不能直接运行的,如果直接去调试浏览器代码是经过编译的

//所以需要使用source-map去进行代码的映射,当在浏览器调试的时候还是自己编写的源码

//这样更容易定位到错误,webpack提供了devtool

baseWebpackConfig.devtool="source-map";

// 服务配置

baseWebpackConfig.devServer= {

port:"9900",

overlay:{

errors:true//当webpack编译过程中出现任何错误,让它显示在网页上面

},

open:false,//启动webpack编译的时候自动打开浏览器

hot:true//只刷新当前组件的代码不刷新整个页面

};

//设置hot后需要加相关插件

//启动hot功能的插件

newwebpack.HotModuleReplacementPlugin(),

);

module.exports=baseWebpackConfig;

baseWebpackConfig.mode="production";

...[

//baseWebpackConfig.plugins这里可以配置一些生产环境所需的插件,如果没有,可以省略

]

);

module.exports=baseWebpackConfig;

main.js

importVuefrom"vue";

importAppfrom"./app.vue";

constdiv=document.createElement("div");

div.id="app";

document.body.appendChild(div);

newVue({

el:"#app",

render:(h)=>h(App)

});

package.json

"scripts": {

},

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180627G0FR5900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券