webpack 功能解析模块,查找相关依赖。自己实现了模块化机制。默认 index.js => main.js,npm webpack => dist 文件夹
npm init -y
npm install webpack webpack-cli -D
npx webpack
npm run build -- --config webpack.config.js
npm install webpack-dev-server --save-dev npm install --save-dev html-webpack-plugin
npm install --save-dev css-loader style-loader
npm install node-sass sass-loader --save-dev
npm install --save-dev mini-css-extract-plugin
"browserslist": [ "iOS >= 6", "Android >= 4", "IE >= 9" ] npm install postcss-loader autoprefixer --save-dev // 新 css 语法特性,可以替换前面的 npm install postcss-cssnext --save-dev
npm install --save-dev clean-webpack-plugin
npm install --save-dev optimize-css-assets-webpack-plugin
npm install --save-dev terser-webpack-plugin
a.核心库 @babel/core b.Polyfill 实现目标环境中缺少的功能 (通过 @babel/polyfill),转换语法 c.babel-loader 解析模块 d.@babel/preset-env 预设:标准语法=>低级语法 c.babel-plugin-transform-runtime 减少冗余,增加语法转化之间的辅助函数 d.babel-runtime c 导入了 babel-runtime 必须要用 e.babel-preset-react 支持 JSX 语法,react 预设 f.@babel/plugin-proposal-class-properties 插件 ES7 相关的语法 g.@babel/plugin-proposal-decorators 装饰器
g.@babel/preset-typescript ts 预设
npm install --save-dev babel-loader @babel/core @babel/preset-env // react 使用预设 babel-preset-react
npm install --save-dev @babel/plugin-proposal-class-properties
npm install --save-dev @babel/plugin-proposal-decorators
babel-plugin-transform-runtime 实际上是依赖 babel-runtime, 当一些内置 api 不会去转化。 promise 和 regenerator 函数时,没有帮助代码。导致不识别
bable polyfill 3 中 babel-runtime bable-polyfill bable-plugin-transform-runtime, 第一种比较大,单独项目直接配置 babel-plugin-transform-runtime npm install --save-dev @babel/plugin-transform-runtime npm install @babel/runtime 缺点 "".includes()不支持
npm install eslint eslint-loader --save-dev
1.npm install jquery 2.npm install expose-loader --save-dev => 拿到 window.$ a.// import $ from 'expose-loader?$!jquery'; b.import $ from 'jquery'; webpack.config.js rules { test: require.resolve('jquery'), use: 'expose-loader?$' }, 3.ProviderPlugins 使用 console.log($); 4.cdn 引入
1.file-loader => 在内部生成一张图片到 dist 目录下,常永远图片比较大,自定义图片对象 2.在 css 应用 2.html-withimg-loader 在标签内部直接写路径 3.url-loader 图片限制 200*1024, 设置了 limit 之后就不需要 file-loaders npm install file-loader html-withimg-loader url-loader --save-dev
npm install copy-webpack-plugin --save-dev
npm i webpack-merge // sh 脚本插件工具 npm install scripty --save-dev // 找到 sh 脚本位置 chmod -R +x scripts // 拿到 node 环境转化成 object npm install yargs-parser --save-dev
// 减少打印参数 npm install friendly-errors-webpack-plugin --save-dev // webpack-build-notifier 这个选择用
noParse: /jquery/, // 不去解析依赖包和依赖包,如果库很大的时候有点用 echart.js 等
Webpack.IgnorePlugin
npm i react react-dom npm install --save-dev @babel/preset-react
tree-shaking: import ES6 在生产模式下,把没有用到的代码,自动去掉。
scopy hosting: 作用域提升,在 webpack 自动把这个对象放到当前作用域中。
npm install --save-dev @babel/plugin-syntax-dynamic-import
npm install --save @types/react @types/react-dom npm install --save-dev typescript awesome-typescript-loader source-map-loader