webpack配置

模块:

1.node模块 commonjs规范

1.1.引用 

let a=require("./a.js");
//引入当前目录下a.js模块,并赋予值给a变量
let path=require("path");
//引入的是当前目录中node_module path模块,并赋值给path变量

1.2模块定义

1.2.1内置模块   fs,path,server

1.2.2自定义模块  每一个js文件都包含一个模块

1.2.3第三方模块  express,mysql

每一个模块中都有module属性指向当前模块


//我这个是当前模块自己
console.log(module);

//
判断当前模块是不是主模块 console.log(require.main===module);

1.3 自定义模块导出

// 求圆的周长与圆的面积
const PI=3.14;
var size=function (r) {
    return PI*r*r;
};
var perimeter=function (r) {
    return 2*PI*r
};
//自定义的属性和方法要导出,别人才可以使用
// exports.size=size;
// exports.perimeter=perimeter;
module.exports={
    size:size,
    perimeter:perimeter
}
//预定义的模块作用域成员:
/*__dirname*/ //当前模块文件所在的目录
/*__filename*/ /*当前模块文件所在的目录及文件名*/
/*module*/    /*指向当前模块的引用*/
/*module.exports={}*//*当前模块中导出的供其他模块使用的对象*/
/*exports*/ /*指向module.exports对象的引用*/
/*require*/ /*引入模块*/

2.前端模块与node模块有类似之处

2.1引入

//当前的a自定义模块
let a=require("./a.js");
//node_module中内置的path模块
let path=require("path");
//引入当前index.css自定义模块
import './index.css';
//引入当前style.less模块
import './style.less';
//引入图片模块,放在page上
import page from './pg2.jpg';

2.2自定义模块

图片/css/less/js/等但需要加载器进行加载

2.3模块导出

 let str="我很帅";
module.exports=str;
let a="我很栓";
let sum=function (num1,num2) {
    alert(num1+num2)
}
// module.exports=a;
module.exports={
    a:a,
    sum:sum
};
let str="我非常帅";
export default str;

3.webpack 打包配置

3.1  下载webpack模块,此时我们使用的是@3版本

window+R =>CMD
npm install webpack -g 全局,可以在命令行中使用(如果不能使用配置环境变量)
webpack或者less最好不要安装全局的,否则则可能会导致webpack版本差异

3.2 npm init -y初始化

  3.2.1.  npm init -y  先初始化
  3.2.2.  npm install webpack@3   --save-dev 添加关联 安装的是3x版本
3.2.3
在package.json中配置一个脚本,这个脚本用的命令是webpack,
拿去当前的node_modules下找bin对应的webpack名字让其执行
,执行的就是bin/webpack.js,webpack.js需要当前目录下有个名字叫webpack.config.js文件,
我们通过nom run build 执行的目录式当前文件的目录,所以会去当前目录查找

"scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "build": "webpack"
  }

3.3 npm run biuld运行

报错:没有找到webpack.config.js文件,创建一个js文件

No configuration file found and no output filename configured via CLI option.

没有找到配置文件,也没有通过CLI选项配置输出文件名。

3.4在当前文件夹创建webpack.config.js文件

var path=require('path');
//输出 module.exports
={ //入口模块 entry:"./src/main.js", output:{ filename:'bundle.js', path:path.resolve('./dist')/*必须是一个绝对路径*/ }, // 模块的解析规则(es6->es5) // js匹配所有的js 用babel-loader转义 排除掉node_module module:{ rules:[ { test:/.js$/, use:'babel-loader', exclude:/node_modules/ }, { test:/.css$/, //从右往左 use:['style-loader','css-loader'] }, { test:/.less$/, use:[{ loader: "style-loader" // creates style nodes from JS strings }, { loader: "css-loader" // translates CSS into CommonJS }, { loader: "less-loader" // compiles Less to CSS }] } , { test: /.(png|jpg|gif)$/, use:'url-loader?limit=8124&name=[path][name].[ext]' } ] } };

3.4es6转义es5

  npm install babel-core --save-dev
  npm install babel-loader --save-dev

让翻译官解析es6语法

 npm install babel-preset-es2015 --save-dev
 创建.babelrc文件,文件内容
  {
    "presets":["es2015"]
  }
webpack.config.js中解析
        rules:[{
                test:/.js$/,
                use:'babel-loader',
                exclude:/node_modules/  //排除node_modules匹配到的
            },]

让翻译官解析es7语法

 babel-presets-npm-0 解析es7语法包含
  npm install babel-preset-stage-0 --save-dev
.babelrc文件  重点
{
  "presets":["es2015","stage-0"]
}

解析CSS

  npm install css-loader style-loader --save-dev
{
                test:/.css$/,
                //从右往左
                use:['style-loader','css-loader']
            }

解析less

预处理语言less/sass/stylus
less
-loader less包必须要有 css-loader style-loader npm install less less-loader --save-dev
{
                test:/.less$/,
                use:[{
                    loader: "style-loader" // creates style nodes from JS strings
                }, {
                    loader: "css-loader" // translates CSS into CommonJS
                }, {
                    loader: "less-loader" // compiles Less to CSS
                }]
            }

解析图片

解析图片
file-loader url-loader (是依赖于file-loader)

npm install file-loader url-loader --save-dev

在JS中引入图片需要import 或者线上路径“http://www.asd.asd”
         {
                test: /.(png|jpg|gif)$/,
                use:'url-loader?limit=8124&name=[path][name].[ext]'
            }

安装解析HTML插件

插件的作用,以我们自己的HTML为模板将打包后的结果,地洞引入到html中产出到dist目录下;
npm install html-webpack-plugin --save-dev
//webpack.config.js文件中

//1.引入第三方模块
var HtmlWebpackPlugin=require('html-webpack-plugin');


module.exports={
//2.在插件中解析
  plugins: [
        new HtmlWebpackPlugin({
            template:'./src/index.html',//src中创建index.html文件
            // filename:"index.html"
        })
    ]
};

运行 npm run build 此时 dist文件创建index.html / bundle.js 此时已经关联了

安装一个webpack服务器插件,可以时时刷新

npm install webpack-dev-server@2 --save-dev

关于版本特点,当你webpack下载的4x的时候, webpack-dev-server必须3x
             当你webpack下载的3x的时候   webpack-dev-server必须2x

配置一个脚本,让他运行

  "scripts": {
    "build": "webpack",
    "dev":"webpack-dev-server"
  },

npm run dev就运行了;可以在dos中找到打开的那个地址比如   http://localhost:8080/

需要安装vue-loader vue-template-compiler
这里安装14版本
vue-loader@14                解析 .vue文件的
vue-template-compiler     用来解析vue模板的

在配置文件中webpack.config.js中配置

         {
            test:/.vue$/,
                use:'vue-loader'
            }
原文地址:https://www.cnblogs.com/liangfc/p/9158188.html