如果我们希望在项目中使用less、scss、stylus来写样式,webpack是否可以帮助我们处理呢? 我们这里以less为例,其他也是一样的。
我们还是先创建一个less文件,依然放在css文件夹中
没装loader的情况下
那么问题来了,如果大于8kb呢?我们将background的图片改成test02.jpg
这次因为大于8kb的图片,会通过file-loader进行处理,但是我们的项目中并没有file-loader,所以,我们需要安装file-loader,npm install --save-dev file-loader
再次打包,就会发现dist文件夹下多了一个图片文件
但是,我们发现图片并没有显示出来,这是因为图片使用的路径不正确
可以在webpack.config.js output里配置publicPath,他会给每个url前加上个拼接的路径
在上述打包后的文件夹dist中,我们发现webpack为打包后的图片自动帮助我们生成一个非常长的名字
所以,我们可以在options中添加上如下选项:
另外上面我们需要用[]取值,如果我们直接用name他就真的就是命名就是“name”
总结一下:
publicPath:"dist/"
我们在之前的打包中,发现ES6的语法并没有转换为ES5,比如说常量的定义const。 那么由于不是所有的浏览器都支持ES6语法的,可能在这些浏览器就无法使用,为了让适用性更高,我们就可以把ES6打包成ES5。
如果希望将ES6的语法转成ES5,那么就需要使用babel
。而在webpack中,我们直接使用babel对应的loader就可以了。
npm install --save-dev babel-loader@7 babel-core babel-preset-es2015
配置webpack.config.js文件
我们会使用Vuejs进行开发,而且会以特殊的.vue文件来组织vue的组件。所以,下面我们需要学习一下如何在我们的webpack环境中集成Vuejs.我们希望在项目中使用Vuejs,那么必然需要对其有依赖,所以需要先进行安装
注:因为我们后续是在实际项目中也会使用vue的,所以并不是开发时依赖下载时候不必--save-dev直接--save即可 npm install vue --save
如上图所示我们在main.js中定义了一个全局vue,按理说打包后应该可以正常显示的,但是这里并没有显示,反而报错了.
bundle.js:1355 [Vue warn]:
You are using the runtime-only build of Vue where the template compiler is not available.
Either pre-compile the templates into render functions, or use the compiler-included build.
resolve:{
alias:{
'vue$':'vue/dist/vue.esm.js'
}
}
这是为啥呢?其实是因为配置好'vue$':'vue/dist/vue.esm.js'
后,我们在组件中在进行导入的时候 import vue from "vue",这个from vue中的vue就是从我们安装好的node_modules/dist/vue.esm.js取出vue