美文网首页
webpack3.4.0结合webpack.wuhaolin.c

webpack3.4.0结合webpack.wuhaolin.c

作者: 刘叶青 | 来源:发表于2019-04-27 08:15 被阅读0次

Webpack,web:网络,pack:打包

webpack.wuhaolin.cn是一个介绍webpack的网站,这个网站的优势是每节内容都有对应的源码,内容也容易理解,学习成本低,第1章是大致给你介绍一下webpack,后面内容是具体细化

学习这个网站的webpack内容时,先翻到每节底部,如果有源码,先下载源码,然后看这节的内容,最后安装需要的npm包,记住,我们的包的版本要跟网站上提供的源码里的版本一致,否则可能会报错

webpack报错原因主要是版本不兼容

webpack3.8.1在遇到css-loader?minimize会报错,需要去掉?minimize;而webpack3.4.0不会报错

extract-text-webpack-plugin,这个插件在webpack4中不支持

如果你用的是webstorm进行开发,要在项目里安装node_modules了,要给node_modules的外面一层文件夹右键--》Mark Directory As--》Excluded,如果不做这一步的话,电脑会卡死

安装webpack-dev-server以后,即使是全局安装,仍然不能使用webpack-dev-server命令,会报错:“The CLI moved into a separate package: webpack-cli      Please install 'webpack-cli' in addition to webpack itself to use the CLI  -> When using npm: npm i -D webpack-cli”,就按照报错信息来,运行npm i -D webpack-cli来安装webpack-cli,但是推荐用cnpm,因为速度更快,但是安装以后再运行‘webpack-dev-server’,报了另外一个错误:“throw new Error('invalid "instanceof" keyword value ' + c)”,最后我下载了1.6节页面最底部的源码,删除node_modules,用网站的源码,然后cnpm install以后,就正常运行了

1.6节说让你执行‘webpack-dev-server’,你不要直接在cmd命令行上执行‘webpack-dev-server’,要要把命令行放在package.json的

"scripts": {

    "build": "webpack-dev-server --hot --devtool source-map"

  }里,运行cnpm run build

构建完毕以后,出现的.map后缀名的文件,就是sourcemap文件

entry: ['./main.js', './branch.js'],entry如果是一个数组,里面有2个js,就会从左往右执行

安装node-sass以后,不能直接执行‘node-sass main.scss main.css’,要把‘node-sass main.scss main.css’放在npm script里(比如"node-sass" : "node-sass main.scss main.css"),再执行‘cnpm run node-sass’就可以了

问:怎么记忆css-loader/style-loader呢?

答:css-loader的核心是css,也就是处理css代码的;style-loader的核心是style,是把css插入到<style>标签里的

devtoolModuleFilenameTemplate:

如果想提升项目的性能,可以在webpack.config.js里module.exports下面设置performance: {

    hints: 'warning'

  },这样,控制台会输入一些帮助你提高性能的建议:

问:哪些插件适合全局安装?

答:希望整个电脑的版本都一致的,就全局安装,比如node-sass;如果项目1里需要用这个版本,项目2需要用另外一个版本,那么这个插件就适合局部安装,比如webpack

问:哪些模块安装时调用‘-S’,哪些模块安装时调用‘-D’?

答:‘-S’是把插件放到package.json的dependencies里,‘-D’是把插件放在package.json的devDependencies里,dependencies放生产环境需要的插件(比如Vue),devDependencies放只需要开发环境需要而生产环境不需要的插件(比如babel-core)

问:复制网上的一句命令‘npm install –save-dev sass-loader node-sass’,返回给我cnpm的版本,这是怎么回事?

答:原来是–save-dev前面需要2个‘-’,改成‘npm install -–save-dev sass-loader node-sass’

�运行‘cnpm install sass-loader node-sass -S’报错,然后换成‘cnpm i -D node-sass sass-loader’就安装成功了,我猜测可能是因为sass-loader依赖node-sass,所以如果前后顺序换了就安装失败了,应该不是‘-S’改成‘-D’所以成功的

在main.js里使用require('style-loader!css-loader?minimize!./main.css');,再在webpack.config.js的module.rules的css文件use: ExtractTextPlugin.extract({

                    // 转换 .css 文件需要使用的 Loader

                    use: ['css-loader'],

                }),

会生成css文件,但是后面会报错,

把require('style-loader!css-loader?minimize!./main.css');改成require('./main.css');就不报错了,估计是require里用了一种方式处理css文件,另外又用了一种loader进行处理,2种方式同时使用会冲突

如果entry是一个对象,里面有2个入口,那么,output不能放在同一个文件里,也就是说,output里的filename不能写死,比如如果写死为'bundle.js',会报错:Conflict: Multiple assets emit to the same filename bundle.js

页面里写require('vue');node就会去node_modules里找vue

问:为什么webpack.config.js和index.html修改了内容,项目监测不到?

答:http://webpack.wuhaolin.cn/2%E9%85%8D%E7%BD%AE/2-1Entry.html讲到了‘entry是配置模块的入口,可抽象成输入,Webpack 执行构建的第一步将从入口开始搜寻及递归解析出所有入口依赖的模块。’而mian.js是找不到webpack.config.js和index.html的,所以这2给文件即使修改了,页面也不会更新

问:3.9节的demo里有这句npm script‘"build": "NODE_ENV=production webpack"’,结果报错了‘'NODE_ENV' 不是内部或外部命令,也不是可运行的程序 或批处理文件。’,怎么解决?

答:改成‘"build": "set NODE_ENV=production && webpack"’,原文链接:https://www.jianshu.com/p/d0ea266c8e14

/\.jsx?$/,这表示匹配js的后缀文件或者jsx的后缀文件

关于‘4-1 缩小文件搜索范围’的‘优化 loader 配置’的这个示例,我的理解是:减少文件夹层数,这样可以减少让node所检查的文件的嵌套层数,类似于js的for循环层数减少了,性能就提高了

3.15节这里出现了‘rsync dist’,以下是我从http://bbs.chinaunix.net/thread-3681210-1-1.html里摘录的一段话:"rsync是linux系统默认带有的命令,window下没有的。要在windows上安装rsync还挺麻烦,需要用到cygwin 之类的在windows上模拟linux环境才能安装rsync吧",实际开发项目里,可以直接把dist文件夹放在服务器上就行了,不用这么麻烦

关于3.16这节内容,我觉得webstorm已经可以对代码进行语法检查了,就没有必要再安装这些插件了

问:3.19这节,在template.html这里引入图片,即使用了file-loader进行解析,还是没有效果,为什么?

答:因为main.js获取不到template.html的代码,如果想在html里让图片被插件解析,可以在js里引入图片,然后把图片插入到html里

问:3.19这节的demo里,webpack.config.js里new WebPlugin的requires的值为什么是['main']?

答:因为entry的值是一个对象,属性名就是'main',你也可以根据自己喜好改成其他值,但是entry值的属性名必须和new WebPlugin的requires值相同

问:为什么template.html里的script标签的src属性值是app?

答:因为webpack.config.js里的这句话,

entry: {

    app: './main.js'// app 的 JavaScript 执行入口文件

  },

如果你把这里的app改成app2,就需要把template.html里的script标签的src属性值改成app2了

package.json的dependencies和devDependencies是按照英文字母的顺序进行排序的,如果想详细了解package.json文件中dependencies和devDependencies的区别,请阅读:https://www.cnblogs.com/xumqfaith/p/8073035.html

vue-router按需加载组件的3种方式:vue异步组件、es提案的import()、webpack的require.ensure():https://segmentfault.com/a/1190000011519350

相关文章

  • webpack3.4.0结合webpack.wuhaolin.c

    Webpack,web:网络,pack:打包 webpack.wuhaolin.cn是一个介绍webpack的网站...

  • 左结合、右结合

    左结合相当于有两个连续的同一优先级的运算符时左边运算符加了圆括号。右结合相当于有两个连续的同一优先级的运算符时右边...

  • 结合

    好久没写文章了,难以想象的是此时我的处境和上一篇文章完全不同!所以今天才有勇气写这么一篇文章吧…… 还是先说动机吧...

  • 结合

    今天给大家介绍亮色和浅色的结合与对比,首先第一组模特是蓝色为主。以蕾丝连身裙黑色阔腿裤和露肚装在加上一字肩的黑色连...

  • 结合

    1, 梦想是个人的,理想是大家的,个人梦想要和大多数人的理想结合在一起。和现实相结合的才能实现。 2,要深入的探寻...

  • 结合

    有连接、关系,不管走多远,依然会向连接之处回首,感下为心,我们在有感情的基础上建立连接,不断牵引着我们内心,走远了...

  • 结合

    你嫁给了柴米油盐酱醋茶 我娶了劳碌奔波不得闲 这就是我们的结合

  • 结合

    把读书跟成功结合到一起,是一种极其功利主义的思想。读书的目的,不在于让你取得多么伟大而卓越的成就,更重要的在于,当...

  • 结合

    结合 人,为什么要努力的寻找爱情的另一半,在那每个理想化了的异性形象中,他们爱得到底是什么?是,这个被理想化的...

  • 结合

    作者:栩小哥 当看到“结合”这一词,不知道身为读者的你会联想到什么? ...

网友评论

      本文标题:webpack3.4.0结合webpack.wuhaolin.c

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