webpack

114次阅读

共计 837 个字符,预计需要花费 3 分钟才能阅读完成。

webpack

时间
note – 11.15
webpack.config.js – 32.28 33.00
package.json –

其余
更改配置文件名 – npx webpack — config webpack.config.my.js
本地服务 – yarn add webpack-dev-server -D 27.46
生成模版 – yarn add html-webpack-plugin -D 32.05

dev – 写到内存中·静态服务

css

css 模块引入
css-loader – 43.30 – @import
yarn add css-loader style-loader -D

style-loader – 放在 style 标签中

less – 49.10 yarn add

sass
stylus 49.40

min-css-extract-pulgin – 51.52 抽离样式 需要自己压缩文件 -
增加浏览器前缀 – postcss-loader – 56.25 58.59

npm install –save-dev postcss-loader autoprefix
npm install –save-dev terser-webpack-plugin
npm install –save-dev optimize-css-assets-webpack-plugin
npm install –save-dev mini-css-extract-plugin

  • OptimizeCSSAssetsPlugin 压缩 css 没有成功
  • postcss 增加前缀失败

看这种视频 感觉不能光看 应该跟着一起操作应该会更投入·同时做好笔记

7 js es6

01.4.30
05.40
07.30
07.47
08.20
09.34

yarn add babel-loader @babel/core @babel/preset-env -D
https://babeljs.io/docs/en/ba…(js 打包)

eslint

Error: Cannot find module ‘eslint/lib/formatters/stylish’
未解决

正文完
 0

WEBPACK

114次阅读

共计 4824 个字符,预计需要花费 13 分钟才能阅读完成。

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph),此依赖图会映射项目所需的每个模块,并生成一个或多个 bundle。从 v4.0.0 开始,webpack 可以不用再引入一个配置文件来打包项目,然而,但它仍然有着 高度可配置性,可以很好满足你的需求。
核心概念

入口(entry)
输出(output)
loader
插件(plugin)
模式(mode)
浏览器的兼容性(browser compatibility)

入口[entry]
入口起点 (entry point) 指示 webpack 应该使用哪个模块, 来作为其内部依赖图的开始。
默认值是 ./src/index.js,但你可以通过在 webpack configuration 中配置 entry 属性,来指定一个(或多个)不同的入口起点。webpack.config.js
module.exports = {
entry: ‘./path/to/my/entry/file.js’
};
输出[output]
output 属性告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件。主要输出文件的默认值是 ./dist/main.js,其他生成文件默认放置在 ./dist 文件夹中。
const path = require(‘path’); // 可能你想要了解在代码最上面导入的 path 模块是什么,它是一个 Node.js 核心模块,用于操作文件路径。

module.exports = {
entry: ‘./path/to/my/entry/file.js’,
output: {
path: path.resolve(__dirname, ‘dist’),
filename: ‘my-first-webpack.bundle.js’
}
};
loader
webpack 只能理解 JavaScript 和 JSON 文件。loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效 模块,以供应用程序使用,以及被添加到依赖图中。在更高层面,在 webpack 的配置中 loader 有两个属性:

test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。
use 属性,表示进行转换时,应该使用哪个 loader。

const path = require(‘path’);

module.exports = {
output: {
filename: ‘my-first-webpack.bundle.js’
},
module: {
rules: [
{test: /\.txt$/, use: ‘raw-loader’}
]
}
};
插件[plugin]
loader 用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。包括:打包优化,资源管理,注入环境变量。
想要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。多数插件可以通过选项 (option) 自定义。你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建它的一个实例。
const HtmlWebpackPlugin = require(‘html-webpack-plugin’); // 通过 npm 安装
const webpack = require(‘webpack’); // 用于访问内置插件

module.exports = {
module: {
rules: [
{test: /\.txt$/, use: ‘raw-loader’}
]
},
plugins: [
new HtmlWebpackPlugin({template: ‘./src/index.html’})
]
};
模式[mode]
通过选择 development, production 或 none 之中的一个,来设置 mode 参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为 production。
module.exports = {
mode: ‘production’
};
const path = require(‘path’);

module.exports = {
mode: “production”, // “production” | “development” | “none” // Chosen mode tells webpack to use its built-in optimizations accordingly.
entry: “./app/entry”, // string | object | array // 默认为 ‘./src’
// 这里应用程序开始执行
// webpack 开始打包
output: {
// webpack 如何输出结果的相关选项
path: path.resolve(__dirname, “dist”), // string
// 所有输出文件的目标路径
// 必须是绝对路径(使用 Node.js 的 path 模块)
filename: “bundle.js”, // string //「入口分块(entry chunk)」的文件名模板
publicPath: “/assets/”, // string // 输出解析文件的目录,url 相对于 HTML 页面
library: “MyLibrary”, // string,
// 导出库 (exported library) 的名称
libraryTarget: “umd”, // 通用模块定义 // 导出库 (exported library) 的类型
/* 高级输出配置(点击显示)*/ },
module: {
// 关于模块配置
rules: [
// 模块规则(配置 loader、解析器等选项)
{
test: /\.jsx?$/,
include: [
path.resolve(__dirname, “app”)
],
exclude: [
path.resolve(__dirname, “app/demo-files”)
],
// 这里是匹配条件,每个选项都接收一个正则表达式或字符串
// test 和 include 具有相同的作用,都是必须匹配选项
// exclude 是必不匹配选项(优先于 test 和 include)
// 最佳实践:
// – 只在 test 和 文件名匹配 中使用正则表达式
// – 在 include 和 exclude 中使用绝对路径数组
// – 尽量避免 exclude,更倾向于使用 include
issuer: {test, include, exclude},
// issuer 条件(导入源)
enforce: “pre”,
enforce: “post”,
// 标识应用这些规则,即使规则覆盖(高级选项)
loader: “babel-loader”,
// 应该应用的 loader,它相对上下文解析
// 为了更清晰,`-loader` 后缀在 webpack 2 中不再是可选的
// 查看 webpack 1 升级指南。
options: {
presets: [“es2015”]
},
// loader 的可选项
},
{
test: /\.html$/,
use: [
// 应用多个 loader 和选项
“htmllint-loader”,
{
loader: “html-loader”,
options: {
/* … */
}
}
]
},
{oneOf: [ /* rules */] },
// 只使用这些嵌套规则之一
{rules: [ /* rules */] },
// 使用所有这些嵌套规则(合并可用条件)
{resource: { and: [ /* 条件 */] } },
// 仅当所有条件都匹配时才匹配
{resource: { or: [ /* 条件 */] } },
{resource: [ /* 条件 */] },
// 任意条件匹配时匹配(默认为数组)
{resource: { not: /* 条件 */} }
// 条件不匹配时匹配
],
/* 高级模块配置(点击展示)*/ },
resolve: {
// 解析模块请求的选项
//(不适用于对 loader 解析)
modules: [
“node_modules”,
path.resolve(__dirname, “app”)
],
// 用于查找模块的目录
extensions: [“.js”, “.json”, “.jsx”, “.css”],
// 使用的扩展名
alias: {
// 模块别名列表
“module”: “new-module”,
// 起别名:”module” -> “new-module” 和 “module/path/file” -> “new-module/path/file”
“only-module$”: “new-module”,
// 起别名 “only-module” -> “new-module”,但不匹配 “only-module/path/file” -> “new-module/path/file”
“module”: path.resolve(__dirname, “app/third/module.js”),
// 起别名 “module” -> “./app/third/module.js” 和 “module/file” 会导致错误
// 模块别名相对于当前上下文导入
},
/* 可供选择的别名语法(点击展示)*/
/* 高级解析选项(点击展示)*/ },
performance: {
hints: “warning”, // 枚举 maxAssetSize: 200000, // 整数类型(以字节为单位)
maxEntrypointSize: 400000, // 整数类型(以字节为单位)
assetFilter: function(assetFilename) {
// 提供资源文件名的断言函数
return assetFilename.endsWith(‘.css’) || assetFilename.endsWith(‘.js’);
}
},
devtool: “source-map”, // enum // 通过在浏览器调试工具 (browser devtools) 中添加元信息 (meta info) 增强调试
// 牺牲了构建速度的 `source-map’ 是最详细的。
context: __dirname, // string(绝对路径!)
// webpack 的主目录
// entry 和 module.rules.loader 选项
// 相对于此目录解析
target: “web”, // 枚举 // bundle 应该运行的环境
// 更改 块加载行为(chunk loading behavior) 和 可用模块(available module)
externals: [“react”, /^@angular\//], // 不要遵循 / 打包这些模块,而是在运行时从环境中请求他们
serve: {//object
port: 1337,
content: ‘./dist’,
// …
},
// 为 webpack-serve 提供选项
stats: “errors-only”, // 精确控制要显示的 bundle 信息
devServer: {
proxy: {// proxy URLs to backend development server
‘/api’: ‘http://localhost:3000’
},
contentBase: path.join(__dirname, ‘public’), // boolean | string | array, static file location
compress: true, // enable gzip compression
historyApiFallback: true, // true for index.html upon 404, object for multiple paths
hot: true, // hot module replacement. Depends on HotModuleReplacementPlugin
https: false, // true for self-signed, object for cert authority
noInfo: true, // only errors & warns on hot reload
// …
},
plugins: [
// …
],
// 附加插件列表
/* 高级配置(点击展示)*/}

正文完
 0