11、webpack指南(配置参考,觉得这位大神写的结构很清晰,一目了然)
常见错误:

1、babel-loader 找不到
基本自己遇到的是cnpm安装下,npm安装下就好了(网上有说是node版本问题?)
babel-loader依赖于babel-core
es6->es5还需要安装babel-preset-es2015 2、关于css方面的报错
1)、loader执行顺序由右往左,一般在写css和sass的loader时尽量这样写
{
test:/\.css$/,
loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
},
{
test:/\.scss$/,
loader:ExtractTextPlugin.extract('style-loader', 'css-loader!sass-loader')
}
//一般这里的错误在test下面的loader被写成loaders方式,或者里面的引入loader写法错误
//运用ExtractTextPlugin方式独立导入不要忘记安装这个插件的loader还有在plugins中执行new ExtractTextPlugin("css/[name].css"), 3、引入全部图片的时候报错找不到loader等
下面这是可以执行的方法:
include: [path.resolve(__dirname, "src/image")],
开始的时候自己错误的写成了--->
include:'./src/image/' //这种方式时错误的 下面贴图片loader和字体loader的代码——>
// 图片 loader
{
test: /\.(jpe?g|png|gif|svg)$/i,
loader: 'url-loader',
query: {
limit: 10000,
name: '/image/[name].[ext]'
},
include: [path.resolve(__dirname, "src/image")],
},
// 字体loader
{
test: /\.(eot|woff|woff2|ttf|svg)$/,
loader: 'url-loader',
query: {
limit: 5000,
name: '/font/[name]-[hash:8].[ext]'
}
} 4、其他莫名其妙的错误
1)之前莫名其妙报错最后发现是写错代码了
module.exports
被自己错误的写成了
module.export 5、报以下错误,发现node_modules\node-sass\vendor 不存在 ERROR in ENOENT: no such file or directory, scandir 'E:\work\test\webpacktest\test3\node_modules\.3.11.1@node-sass\vendor'
@ ./src/css/style.scss 4:14-137 解决方法:
npm rebuild node-sass 就解决所有问题了【需要安装visual studio 2015,并 执行 npm config set msvs_version 2015】 每次执行编译前清空输出目录
CleanWebpackPlugin = require('clean-webpack-plugin') //需要安装插件 //在plugins中写,‘dist’为输出目录
new CleanWebpackPlugin(['dist'], {
root: '', // An absolute path for the root of webpack.config.js
verbose: true, // Write logs to console.
dry: false // Do not delete anything, good for testing.
}), 常用的执行命令
//写在package.json中
"scripts": {
"dev": "webpack-dev-server --inline --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
"predeploy": "npm run build",
"deploy": "surge --project . --domain vue-2-simple-routing-example.surge.sh"
}, //在webpack.config.js的module.exports里面写-->例子,完整的看官网
devServer: {
// Enable history API fallback so HTML5 History API based
// routing works. This is a good default that will come
// in handy in more complicated setups.
historyApiFallback: true, // Unlike the cli flag, this doesn't set
// HotModuleReplacementPlugin!
hot: true,
inline: true, // Display only errors to reduce the amount of output.
// stats: 'errors-only', host: "localhost", // Defaults to `localhost` process.env.HOST
port: "8081", // Defaults to 8080 process.env.PORT
}
//webpack-dev-server只是相当于建一本地服务器,--hot开启热加载(但是我本地开启了不仅html连css改动都没变化) //暂时自己用webpack -w --devtool source-map
//仅用来编译css和js之类的,手动刷新... # 常用的loader css-loader //转义css
style-loader //转义css
sass-loader //转义scss文件
node-sass //安装sass-loader则必装
file-loader //url-loader则必装此插件
html-loader
url-loader //图片,字体等需要用上
extract-text-webpack-plugin //独立css
html-webpack-plugin //执行分配html
jquery
webpack
webpack-dev-server //建立本地服务器
expose-loader //全局声明??
babel-loader
babel-core //安装babel-loader则必装
babel-preset-es2015
open-browser-webpack-plugin //自动打开浏览器
webpack-validator //验证是否正确 cnpm install babel-core babel-loader babel-preset-es2015 extract-text-webpack-plugin file-loader html-webpack-plugin jquery node-sass sass-loader url-loader file-loader webpack css-loader style-loader webpack-dev-server open-browser-webpack-plugin --save-dev # 常用片段 ## jquery --用来全局引入jquery类似shim
第一种方法
jquryPath = path.resolve(node_modules, 'jquery/dist/jquery.min.js');
resolve: {
alias: {
'jquery': jquryPath,
},
extensions: ['', '.js', '.json']
},
var providePlugin = new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery',
});
第二种方法
{
test: require.resolve('jquery'), // 此loader配置项的目标是NPM中的jquery
loader: 'expose?$!expose?jQuery', // 先把jQuery对象声明成为全局变量`jQuery`,再通过管道进一步又声明成为全局变量`$`
}, 如果需要使用babel-preset-es2015的话需要在文件下创建一个.babelrc:
{
"presets": ["es2015"]
}
或者也可以放到packjson里面 # git提交配置--不提交指定目录文件 新建一个.gitignore的文件,在里面写格式如下: node_modules/
src/
npm-debug.log # 常用启动命令
"start": "webpack-dev-server --hot --inline" # 额外东西 ## CommonJS写法 eg:
nav.js---- function getNav(){
var el=document.getElement.querySelectorAll('.nav');
return el.innerHTML;
}
module.exports= getNav; main.js---- var nav=require('./nav');
console.log(nav()) ######## 需要强烈注意到几个点: ## 1、loder的执行顺序是从右到左 npm安装node-sass模块的时候,会卡在 node scripts/install.js这里,因为要去github.com上下载二进制源码,众所周知的原因,国内的网络上github.com速度太不稳定了,所以安装很慢。
这里推荐一种极速安装的方法,当然还是使用万能的淘宝镜像源。
打开~/.npmrc(windows用户打开 c:\Users\当前用户名\.npmrc) SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ 增加一行npm install 之后就可以了。

webpacke踩坑-新手的更多相关文章

  1. 日常踩坑-------新手使用idea

    mybatis在idea的maven项目中的坑 今天遇到mybatis的报错,搞了好久才搞懂,在网上找了好久的相似案例,也没有搞定,先来看下网上常见的解决办法吧,相信也能解决大部分人的报错. 1.ma ...

  2. JavaScript 新手的踩坑日记

    引语 在1995年5月,Eich 大神在10天内就写出了第一个脚本语言的版本,JavaScript 的第一个代号是 Mocha,Marc Andreesen 起的这个名字.由于商标问题以及很多产品已经 ...

  3. echart 新手踩坑

    仪表盘踩坑 我采用的是单文件引入的方式来加载echarts图标也可以使用配置等方式详情参考文档,如果同学们要做出更加丰富的样式请参考文档配置手册配置手册:http://echarts.baidu.co ...

  4. 【常见踩坑】USB调试安装失败(Installation failed with message INSTALL_CANCELED_BY_USER)

    一.写在前面 最近一直在忙活着项目重构,忙活了一个多月(那是天天加班,不分昼夜呀,ps:这不是我司要求的哈),终于把沉积了三四年的老项目给重构了,目前在测试阶段,也总算有了点闲时来跟大家分享分享一些问 ...

  5. [置顶] xamarin android toolbar(踩坑完全入门详解)

    网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...

  6. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  7. Spring Boot 开发系列一 开发踩坑

    这是学习spring boot 的第二周,公司号称这玩意是啥都不会的新手就可以填空开发,于是决定上手一把,怎么说我也是搞了快七八年的.NET和.NETcore,没想到无情打脸,快被这个能填空开的IDE ...

  8. manjaro xfce 18.0 踩坑记录

    manjaro xfce 18.0 踩坑记录 1 简介1.1 Manjaro Linux1.2 开发桌面环境2 自动打开 NumLock3 系统快照3.1 安装timeshift3.2 使用times ...

  9. 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)

    未经允许,不得擅自改动和转载 文 | 阿小庆 2018-1-20 本文继第一篇文章:01-NVIDIA Jetson TX2开箱上电显示界面 TX2 出厂时,已经自带了 Ubuntu 16.04 系统 ...

随机推荐

  1. Windows Server 2016-部署额外域控制器

    我们一般所提到的所谓域外控制器,是指除域内第一台域控制器之外的其他域控制器.额外域控制器很多时候也有辅助域控一称.那么在同一域内安装多台域控制器有什么优点呢: 1.提高用户登录效率.多台域控制器可以同 ...

  2. express respond.send 和 end的区别

    做个记录 res.send() will send the HTTP response. Its syntax is, res.send([body]) The body parameter can ...

  3. JDBCTemplate与模板设计方法(二)

    前言:上一篇博客介绍了模板方法模式,并且给出了一个小demo,简单对模板方法进行了实现,接下来我们把目光转向spring的源码JDBCTemplate,看一看spring是如何对jdbc进行高度封装的 ...

  4. iOS 使用NTP时间同步服务

    githup上有相关开源库, ios-ntp 导入即可使用 NetworkClock *netClock = [NetworkClock sharedNetworkClock]; netClock.n ...

  5. centos 6.* 配置端口

    vi /etc/sysconfig/iptables 将 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT     (允 ...

  6. C++ 值类型和引用类型传递示例

    // win32test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" void swap_point(int * &a , in ...

  7. 使用FFMPeg对视频进行处理

    FFMPeg处理视频的核心操作方式是命令,无论是在Windows上还是Linux上.那么下边就简单介绍下,常见的处理命令. 示例1:截取一张352×240尺寸大小的,格式为jpg的图片: ffmpeg ...

  8. FFMpeg for PHP

    PHP使用FFMpeg来转换视频格式.Github上搜索FFMPEG,到https://github.com/PHP-FFMpeg/PHP-FFMpeg. For Windows users : Pl ...

  9. Egret学习笔记 (Egret打飞机-3.实现背景循环滚动)

    游戏背景里面的猪脚飞机看起来是一直在向前飞,但是实际上只是一个视觉差而已. 猪脚是出于不动的状态,背景从上到下滚动,然后让玩家觉得飞机在不停的往前飞.(当然这只是其中一种实现思路) 差不多就是这样,然 ...

  10. 1.2 decimal模块

    >>> 0.1 + 0.1 +0.1 == 0.3 False >>> >>> print(0.1 + 0.1 + 0.1) 0.30000000 ...