博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack学习笔记(四)
阅读量:5958 次
发布时间:2019-06-19

本文共 1864 字,大约阅读时间需要 6 分钟。

1 webpack的垫片

举个例子,在main文件中引入jquery和doash两个库:

import $ from 'jquery';import _ from 'lodash';import { ui } from './jquery.ui.js';ui();

对应的jquery.ui.js比如说是一个第三方库,很有可能是在 node_module中:

export function ui(){  $('body').css('background', _.join(['green'],''));}

由于webpack打包是基于模块的,每个模块之间也是相互独立的,所以在main中引入的jquery 在 jquery.ui.js中无法使用的,故需要在webpack的配置文件中做一下操作:

import webpack from 'webpack'{  plugins:[    new webpack.ProvidePlugin({      $:'jquery',      _:'lodash'    })  ]}

2 this指代window

因为默认的this是指向当前模块的,所以为了让this指向window,需要安装: npm install imports-loader --save-dev 

webpack最初对js只有一个loader的时候:

{  module:{    rules:[      {        test:/\.js$/,        exclude:/node_modules/,        loader:'babel-loader'      }    ]  }}

而有多个loader的时候,使用下面方式:

{  module:{    rules:[      {        test:/\.js$/,        exclude:/node_modules/,        use:[{          loader:'babel-loader'        },{          loader:'imports-loader?this=>window'        }        ]       }    ]  }}

这样对于js文件,先使用imports-loader把this指向了window 再使用babel-loader 编译js文件,莫要忘记babelrc配置文件。

3 环境变量

已知webpack的配置文件目录如下:

-build  -webpack.common.js  -webpack.dev.js  -webpack.prod.js

分别在dev和prod中使用了webpack-merge对配置文件进行的合并,在这里我们使用命令行中传入环境变量的形式,则dev和prod中只导出自己的配置项,不再引入merge:

此时comm.js中引入merge,如下所示:

const merge = require('webpack-merge');const devConfig = require('./webpack.dev.js');const prodConfig = require('./webpack.prod.js');const commonConfig = {  entry:{},  output:{},  plugin:{},  module:{}  ...}module.exports = (env) => {  if(env && env.production){    return merge( commonConfig ,prodConfig);  }else{    return merge( commonConfig ,devConfig);  }}

对应的命令行配置中,config.json

{  "scripts":{    "dev":"webpack-dev-server --config ./build/webpack.common.js",    "build":"webpack --env.profuction --config ./build/webpack.common.js",//均运行common文件,并且定义了环境变量  }}

 

转载于:https://www.cnblogs.com/xiaozhumaopao/p/10662045.html

你可能感兴趣的文章
崩溃日志的实例
查看>>
base64是啥原理
查看>>
实战 Windows Server 2012 群集共享卷
查看>>
CSS 元素超出部分滚动, 并隐藏滚动条
查看>>
React中那些纠结你的地方(一)
查看>>
Docker入门安装教程
查看>>
PhoneGap极光推送 cordova消息推送
查看>>
Subarray Sum Equals K
查看>>
preventDefault, stopPropagation, stopImmediatePropagation 三者的区别
查看>>
超级账本HyperLedger初体验
查看>>
完美解决html中select的option不能隐藏的问题。
查看>>
推荐5大开源工具,用于开发Kubernetes项目
查看>>
制定2015年的移动开发策略
查看>>
JPA 2.2改进了易用性
查看>>
从蚂蚁金服实践入手,带你深入了解 Service Mesh
查看>>
24周年,“常青树”Delphi发布新版本10.3.1
查看>>
7. 从数据库获取数据- 从零开始学Laravel
查看>>
阿里百川码力APP监控 来了!
查看>>
使用dotenv管理环境变量
查看>>
温故js系列(11)-BOM
查看>>