webpack踩坑之路

  1. webpack+babel常用包和插件

  2. 没有设置repositorydescription

    npm WARN demo@1.0.0 No description 
    npm WARN demo@1.0.0 No repository field.
    

    会有两个warn,就是说没有repository和description,也就是说缺少项目的基本描述文件和仓库字段,一般团队合作时会用到,比如git仓库和readme,设置了就不会有警报了,当然也可以在package.json中添加"private": true选项表示这是私人的,这样也不会有警报

  3. 另外两个warn

    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} 
    (current: {"os":"win32","arch":"x64"})
    

    这是因为这个fsevents依赖是个可选的依赖包,只有项目运行环境是mac OS时才会使用,所以在windows和linux下会报这个warn,无关紧要。

    It occurs because fsevents is an optional dependency, used only when project is run on macOS environment (the package provides 'Native Access to Mac OS-X FSEvents').
    And since you're running your project on Windows, fsevents is skipped as irrelevant.

  4. 没有设置mode

    WARNING in configuration The 'mode' option has not been set, webpack will fallback to 'production' for this value. 
    Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
    

    没有指明模式,只需要在package.json文件的scripts选项下的命令后加上--mode development或者--mode production来指明是开发环境还是生产环境就行

  5. extract-text-webpack-plugin插件不支持webpack4

    DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
    

    需要用最新版的(Beta测试版)的extract-text-webpack-plugin,在后面加上@next即可,即npm install extract-text-webpack-plugin@next

  6. babel-preset-es2015逐渐被废弃,不建议使用

    Babel now has a better preset that we recommend you use instead: npm install babel-preset-env --save-dev
    

    换用babel-preset-env就行,注意env后面不要加@next,否则会安装Beta7.0的版本,这样的话就会导致babel版本不一样,会报错:

    TypeError: Cannot read property 'loose' of undefined
    

    babel-preset-es2015迁移到babel-preset-env也很方便,只需要把原先的babel-preset-es2015uninstall掉再装上babel-preset-env,再把.babelrc文件中的"presets":["es2015"]改成"presets":["env"]就行

  7. vue-loaderv15.0+版本的问题

    vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config.
    

    在15.0+版本的vue-loader中,会报上面的错误,即15.0以上版本的vue-loader需要一个插件,解决方法是把vue-loader换成15.0版本以下的或者装上插件,也很简单,在webpack.config.js中添加插件:

    var VueLoaderPlugin = require('vue-loader/lib/plugin');
    
    //...
    plugins: [
        // make sure to include the plugin for the magic
        new VueLoaderPlugin()
        // ...
    ]
    //...
    
  8. webpack4中废弃了webpack.optimize.UglifyJsPlugin

    Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimization.minimize instead.
    

    这是因为在生产环境打包时,压缩js时用到了

    new webpack.optimize.UglifyJsPlugin({
        compress:{  
           warnings:false
        }
    })
    

    但是在webpack4中,废弃了之前的webpack.optimize.UglifyJsPlugin的用法,所以会报上面的错误。解决方法是:

    1. 用npm安装uglifyjs-webpack-plugin插件,npm install --save-dev uglifyjs-webpack-plugin
    2. 将其引入:let UglifyJsPlugin=require('uglifyjs-webpack-plugin')
    3. 删除以前的写法,将optimization选项与plugins选项并排写在一起,注意,是并排,而不是像以前一样写在plugins里面。
    let UglifyJsPlugin = require('uglifyjs-webpack-plugin');
    
    //...
    plugins:[
        //...
    ],
    optimization: {
        minimizer: [
          new UglifyJsPlugin({
            uglifyOptions: {
              compress: false,
            }
          })
        ]
    }
    //...
    

    注意optimization选项不要写到plugins选项里面

  9. Refused to apply style from 'http://localhost:8080/dist/main.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

  10. webpackwebpack-dev-server的区别

    1. webpack只是构建项目,webpack-dev-server除了构建项目还提供web服务,即给本地开发提供了一个服务器(一个小型的Node.js Express服务器)。
    2. webpack.config.js的路径参数:entry都是一样的,即需要知道要构建打包的文件在哪里,区别在于output,webpack打包之后会将输出文件放于output指定的路径,是真是的物理地址,而webpack-dev-server则是将输出文件放在内存中,仅供开发时使用,一旦关闭服务器打包之后的文件就会消失。

    从上面可以看出,webpack-dev-server用于开发环境下,修改后内存中的文件可以动态更新,而webpack用于生产环境下,修改之后想要更新必须重新构建。

  11. Webpack——解决疑惑,让你明白

  12. package.jsonpackage-lock.json的区别

  13. 在配置了babel+webpack的环境之后,无法使用展开/收集云算法(就是...运算符),会报错Unexpected token,这是因为没有指明ES6的stage,...运算符是stage-4的语法,需要在.babelrc文件中进行preset配置:

    "presets": [
        // ...
        "stage-2"
        // ...
    ],
    

    指明一个小于等于stage-4的stage,同时需要本地安装对应的stage包,如npm install --save-dev babel-preset-stage-2,否则会报错

    Error: Couldn't find preset "stage-2" relative to directory ...
    

    对于stage,详细说明如下:

    preset stage-0其实包含了stage-[1-3],装了0,其他三个默认就装了,不需要重复安装,因为它包含stage-1,stage-2以及stage-3的所有功能。另外,[0-3]是代表了不同阶段,但0是代表刚开始讨论,而3是代表快要成为标准规范了,切忌搞混。在进行实际开发时,可以更具需要来设置对应的stage。如果省事懒得折腾,一般设置为stage-0即可。如果为了防止开发人员使用某些太新的功能,我们可以限制到某个特定的stage。更详细、更专业一点的介绍如下:

    stage3包含以下两个插件:

    • transform-async-to-generator
    • transform-exponentiation-operator

    stage2包含stage3的所有插件,额外还有以下插件:

    • syntax-trailing-function-commas
    • transform-object-reset-spread

    stage1包含stage2所有插件,额外还有以下插件:

    • transform-class-constructor-call (Deprecated)
    • transform-class-properties
    • transform-decorators – disabled pending proposal update
    • transform-export-extensions

    stage0包含stage1所有插件,额外还有以下插件:

    • transform-do-expressions
    • transform-function-bind
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容