从0搭建本身的webpack开发环境(三)

往期回顾:javascript

从0搭建本身的webpack开发环境(一)css

从0搭建本身的webpack开发环境(二)vue

1.处理JS模块

1.1 将es6代码编译成es5代码

代码的转化工做要交给babel来处理java

npm install @babel/core @babel/preset-env babel-loader --save-dev
复制代码

@babel/core是babel中的核心模块,@babel/preset-env 的做用是es6转化es5插件的插件集合,而babel-loaderwebpackloader的桥梁。webpack

const sum = (a, b) => {
  return a + b;
};
复制代码

增长babel的配置文件 .babelrces6

{
    "presets": [
       ["@babel/preset-env"]
    ]
}
复制代码

配置loaderweb

module: {
	rules: [{ test: /\.js$/, use: "babel-loader" }]
},
复制代码

如今打包已经能够成功的将es6语法转化成es5语法!npm

1.2 解析装饰器

npm i @babel/plugin-proposal-class-properties @babel/plugin-proposal-decorators --save-dev
复制代码
"plugins": [
  ["@babel/plugin-proposal-decorators", { "legacy": true }],
  ["@babel/plugin-proposal-class-properties",{"loose":true}]
]
复制代码

legacy:true表示继续使用装饰器,loose为false时会采用Object.defineProperty定义属性json

  • Plugin会运行在Preset以前
  • Plugin 会从第一个开始顺序执行,Preset则是相反的

1.3 polyfill

根据.browserslistrc文件,转化使用到的浏览器apiapi

"presets": [
    ["@babel/preset-env",{
        "useBuiltIns":"usage", // 按需加载
        "corejs":2 // corejs 替代了之前的pollyfill
    }]
]
复制代码

安装corejs

npm install core-js@2 --save
复制代码

使用transform-runtime A plugin that enables the re-use of Babel's injected helper code to save on codesize.能够帮咱们节省代码。

npm install --save-dev @babel/plugin-transform-runtime @babel/runtime
复制代码

.babelrc中配置插件

"plugins": [
    "@babel/plugin-transform-runtime"
]
复制代码

1.4 添加eslint

安装eslint

npm install eslint
npx eslint --init # 初始化配置文件
复制代码
{
    test:/\.js/,
    enforce:'pre',
    use:'eslint-loader'
},
复制代码

配置eslint-loader能够实时校验js文件的正确性,pre表示在全部loader执行前执行

2.source-map

  • eval:生成代码 每一个模块都被eval执行,每个打包后的模块后面都增长了包含sourceURL
  • source-map:产生map文件
  • inline:不会生成独立的 .map文件,会以dataURL形式插入
  • cheap:忽略打包后的列信息,不使用loader中的sourcemap
  • module:没有列信息,使用loader中的sourcemap(没有列信息)
devtool:isDev?'cheap-module-eval-source-map':false
复制代码

每一个库中采用的sourcemap方式不一,能够根据本身的须要自行配置

3.resolve解析

想实现使用require或是import的时候,能够尝试自动添加扩展名进行匹配

resolve: {
    extensions: [".js", ".jsx", ".json", ".css", ".ts", ".tsx", ".vue"]
},
复制代码

4.拷贝静态文件

有时候在打包时但愿将一些静态资源文件进行拷贝,能够使用copy-webpack-plugin插件

安装插件

npm i copy-webpack-plugin --save-dev
复制代码

使用拷贝插件

const CopyWebpackPlugin = require('copy-webpack-plugin');
new CopyWebpackPlugin([
    {from:path.resolve('./src/static'),to:path.resolve('./dist')},
])
复制代码

相关文章
相关标签/搜索