zoukankan      html  css  js  c++  java
  • webpacke踩坑-新手

    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
    ode-sassvendor 不存在
    
    ERROR in ENOENT: no such file or directory, scandir 'E:work	estwebpacktest	est3
    ode_modules.3.11.1@node-sassvendor'
     @ ./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 之后就可以了。
  • 相关阅读:
    MySql—修改权限
    linux apache Tomcat配置SSL(https)步骤
    spark-shell启动错误
    spark
    Ubuntu不能连接网络
    NSGA-II算法学习
    SpringBoot集成mybatis,同时读取一个数据库中多个数据表
    设置虚拟机ip地址
    发送邮件
    spring session
  • 原文地址:https://www.cnblogs.com/jldiary/p/6044478.html
Copyright © 2011-2022 走看看