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. C语言实现简易2048小游戏

    一直很喜欢玩这个小游戏,简单的游戏中包含运气与思考与策略,喜欢这种简约又不失内涵的游戏风格.于是萌生了用C语言实现一下的想法. 具体代码是模仿这个:https://www.cnblogs.com/ju ...

  2. 阶段小项目1:循环间隔1秒lcd显示红绿蓝

    #include<stdlib.h>#include<stdio.h>#include<string.h>#include<error.h>#inclu ...

  3. css居中方法与双飞翼布局

    居中 类型 方法 对应属性 水平 垂直 水平&垂直 1.父元素使用外边距自动 2.子元素显示行内块级元素,写入内容,父元素设置文本居中 3.给父元素开启非绝对和固定定位作为子元素开启绝对定位的 ...

  4. [Python Study Notes]列表操作

    列表操作 a.切片 >>> names = ["Alex","Tenglan","Eric","Rain&quo ...

  5. 【阿里聚安全·安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone

    本周的七个关键词: 外星恶意代码 丨 任意解锁iPhone 丨  安卓9.0 丨 黑客攻击医疗设备 丨 仙女座僵尸网络 丨  苹果联合创始人被骗比特币 丨JavaScript -1-   [恶意代码] ...

  6. MySQL的InnoDB引擎与MyISAM引擎

    MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与 ...

  7. xBIM WeXplorer 设置模型颜色

    目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...

  8. spring cron 定时任务

    文章首发于个人博客:https://yeyouluo.github.io 0 预备知识:cron表达式 见 <5 参考>一节. 1 环境 eclipse mars2 + Maven3.3. ...

  9. 如何学习 MFC ?

    //std::string => CString std::string srcString = "Hello World!"; CString dstString = CS ...

  10. AC Dream1069

    这题的加密字符 - (Fibnacci % 26),如果得到的字符小于'a',就等于加密字符 - (Fibnacci % 26)+26. 获得题目的函数如下: void getItem(){ char ...