1.与webpack类似的工具还有哪些?谈谈你为什么选择使用或放弃webpack?
思维导图
各个demo地址
https://gitee.com/laddish/parcel-demo
https://gitee.com/laddish/grunt-demo
https://gitee.com/laddish/gulp-demo
https://gitee.com/laddish/rollup-demo
grunt
cnpm i grunt grunt-babel @babel/core @babel/preset-env -D
Gruntfile.js
gulp
不适合项目复杂
yarn add gulp-cli -g
yarn add gulp -D
npx -p touch nodetouch gulpfile.js
gulp --help
yarn add --save-dev gulp-cli gulp gulp-babel @babel/core @babel/preset-env
gulpfile.js
基于任务流
读取文件传给babel任务写到dist里去
api
src
pipe
desk
{
"name": "gulpdemo",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"build":"gulp"
},
"dependencies": {
"@babel/core": "^7.13.10",
"@babel/preset-env": "^7.13.12",
"gulp": "^4.0.2",
"gulp-babel": "^8.0.0"
}
}
webpack
webpack.config.js
mode 模式
devtool 不生成sourcemap
entry 入口文件
module
plugin 插件
rollup
介绍 | rollup.js 中文文档 | rollup.js 中文网
https://www.rollupjs.com/guide/introduction
yarn add rollup-plugin-babel rollup-plugin-node-resolve babel-plugin-external-helpers
yarn add @babel/core @babel/preset-env
"scripts":{
"build":"rollup -c ./rollup.config.js"
}
rollup.config.js
input 类似于webpack的entry
output 输出
file output filename
format:’cjs’ common.js module.exports
exports default
plugins 插件
{
"name": "rollupdemo",
"version": "1.0.0",
"main": "rollup.config.js",
"license": "MIT",
"scripts": {
"build": "rollup -c ./rollup.config.js"
},
"dependencies": {
"@babel/core": "^7.13.10",
"@babel/preset-env": "^7.13.12",
"babel-plugin-external-helpers": "^6.22.0",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-node-resolve": "^5.2.0"
}
}
import resolve from "rollup-plugin-node-resolve";
import babel from "rollup-plugin-babel";
export default {
input: "src/main.js",
output: {
file: "dist/bundle.js",
format: "cjs",
exports: "default",
},
plugins: [
resolve(),
babel({
presets: ["@babel/preset-env"],
exclude: "node_modules/**",
}),
],
};
parcel
快速,零配置,静态资源es6都内置
安装
yarn global add parcel-bundler
parcel -V
启动
{
"name": "parceldemo",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"start": "parcel src/index.html -p 8089"
}
}