webpck踩坑记录

1 启用webpack-dev-server
需要注意版本问题:已知正常运行版本

"webpack": "4.44.2",
 "webpack-cli": "3.3.5",
 "webpack-dev-server": "^3.1.4"


2 webpack-dev-server如何配置呢?
解决办法:我们需要在webpack.config.js文件中作如下设置:
  devServer:{
    contentBase:path.join(__dirname,"dist"),
    compress:true,
    port:9000
  },

3 如何增加对vue文件的支持??
  
  解决方案:loader的处理+VueLoaderPlugin插件,
也就是我们要在webpack config.js文件中做如下设置

const VueLoaderPlugin =require("vue-loader/lib/plugin")
  module:{
    rules:[
     {
        test:/\.vue$/,
        loader:"vue-loader",
      },
    ]
 },
 plugins:[
    new VueLoaderPlugin()
 ]
特别注意VueLoaderPlugin()的引入路径是
const VueLoaderPlugin =require("vue-loader/lib/plugin")同时要注意vue-loader版本,如果是16以上版本,那么会报错找不到vue-loader/lib/plugin,

也就是vue-loader的文件中没有lie文件夹。需要把vue-loader版本降级为15.9.5。特别注意。
 

4  如何增加对es6的支持??
 解决办法:安装如下babel配置。特别注意版本问题:默认安装babel是8.0版本
这需要babel-core的版本与之匹配,否则会报错。
目前已经可以正常运行的版本如下
 "babel": "^6.23.0",
    "babel-core": "^6.26.3",
    "babel-loader": "7.1.5",
    "babel-preset-env": "^1.7.0",   

5 如何在package.json中配置script命令,(dev或者start),自动根据该指令执行
开发环境。生产环境任务?
解决办法:在package.json中作如下配置:
"build": "cross-env NODE_ENV='production' webpack --config ./webpack.config.js",
 "dev": "cross-env NODE_ENV='development' webpack-dev-server --config ./webpack.config.js",
 "start": "cross-env NODE_ENV='development' webpack-dev-server --config ./webpack.config.js"

注意:如果不加cross-env 那么在window下是无法识别NODE_ENV='development'和NODE_ENV='production' 
--config后面是webpack.config.js文件相对于当前文件,也就是package.json目录下的路径地址

6 如何抽离css,通过link方式引入打包以后的css文件?

此功能需要引入mini-css-extract-plugin插件。在webpack.cofig.js 做如下配置

const MiniCssExtractPlugin=require("mini-css-extract-plugin")

 module: {

        rules: [

            {

                test: /\.css$/,

                use: ["style-loader",MiniCssExtractPlugin.loader, "css-loader"],

            }

        ]

    },

plugins: [

        new HtmlWebpackPlugin({

            template: "./index.html",

            filename:"index.html",

            curEnv: process.env.NODE_ENV,

        }),

        new CleanWebpackPlugin({

            cleanOnceBeforeBuildPatterns: ["./dist"]

        }),

        new MiniCssExtractPlugin({

            filename:"css/[name].css"

        })

    ]

7如何把打包以后的js文件单独放置在js文件夹中?

只需要更改output配置即可,比如我们之前的output配置如下

output: {

        path: path.resolve(__dirname, "../dist"),

        filename: 'name].js'

    },

现在只需要做如下更改

output: {

        path: path.resolve(__dirname, "../dist"),

        filename: 'js/[name].js'

    },

6 如何根据不同环境让test环境下sourcemap,而production下直接压缩关闭sourcemap?

7 为什么配置了多入口,也配置了output的filename为【name】.js,但是打包以后是main.js文件而不是多个?

原因:没有配置npm的script的build命令:

"scripts": {

    "test": "echo \"Error: no test specified\" && exit 1",

    "build": "webpack  --config ./webpack.config.js"

  },

 "build": "webpack  --config ./webpack.config.js"  其中--config必不可少。它表示给npm 的 config传入参数,后面紧跟的是config所在的路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值