webpack

webpack成神之路(七)

2019-05-22  本文已影响1人  AAA前端
  1. 接下来说一下resolve, webpack在查找时会先在当前目录查找,找不到往上一层继续找,再找不到继续往上。。。。
resolve:{  // 解析 第三方包
  modules: [path.resovle('node_modules')]
}
import 'bootstrap/dist/css/bootstrap.css';

index.js中就可以直接引入别名了

image.png
extensions: ['.js', '.json']
import './index'
  1. 定义环境变量,我们开发和上线环境不一样,这样我们可以通过内置的webpack.DefinePlugin来定义环境变量。
if(Dev){
  console.log('Dev 存在:'+ Dev)
}
        new webpack.DefinePlugin({
            Dev: "'div'"   // 一定记得在双引号里面是单引号的,这样才是字符串,不然是dev这个变量
        })

        new webpack.DefinePlugin({
            //Dev: "'div'"   // 一定记得在双引号里面是单引号的,这样才是字符串,不然是dev这个变量
            Dev: JSON.stringify('div'), // 转换为字符串,
            Flag: 'true', // 这里对应的boolean值, "'true'"这样才是字符串true
            Add: '1+1', //这里是2
        })
image.png

index.js


if(Dev){
  console.log('Dev 存在:'+ Dev, typeof Flag, Add)  
}
  1. 现在我们通过环境变量来决定生产还是开发其实还有些麻烦。更好的做法是: webpack.config.js改为webpack.base.js.里面放基础的配置。 再创建两个js分别是开发js webpack.dev.js ,生产js webpack.prod.js

然后我们在webpack.dev.js中配置开发

let {smart} = require('webpack-merge');

let base = require('./webpack.base.js')


// smart模块 类似于Object.assgin 合并对象
module.exports = smart(base, {
    mode: 'development',
    // 生产环境这里可以配置devServer devtool: source-map等便于开发 
})  

webpack.prod.js配置生产

let {smart} = require('webpack-merge');

let base = require('./webpack.base.js')


// smart模块 类似于Object.assgin 合并对象
module.exports = smart(base, {
    mode: 'production',
    // 生产环境配置比如压缩,去掉console等配置
})  

在package.json中配置启动命令

  "scripts": {
    "build": "webpack --config webpack.prod.js",
    "dev": "webpack --config webpack.dev.js",
    "serve": "webpack-dev-server"
  },

webpack.base.js中配置大家都会用的配置 比如: HtmlWebpackPlugin等,注意由于smart模块是base反正前面,所以在大家都有的配置比如mode时,base里面的配置会被覆盖


image.png

然后我们分别运行 npm run dev ; npm run build .查看home.js可以看到 第一个没有被压缩,第二个被压缩了。怎么成功了

上一篇 下一篇

猜你喜欢

热点阅读