webpack

webpck:资源打包工具,多个资源转换为某一个或多个块

具体分为:入口、输出、模式、loader、插件

入口和输出官网 https://www.webpackjs.com/concepts/mode/

在此只记录一部分。

模式:

模式只在配置中提供mode,

cli、配置参数,不同的模式启动插件不同。

webpack --mode=production

loader:预处理文件,类似任务,关于gulp 等其他工具还是没弄清楚怎么用。

loader 可以将typescript 等语言转换为标准的js,转换前需下载指定的loader

这里以css 为例子,安装模块

npm install --save-dev css-loader

 除了直接在配置文件中配置还有通过内联和cli两种方式

内联: import  !感叹号用来区分loader(js 中使用import-es6)但是node环境中是使用commonJS 规范,如果使用import 需要进行一定的配置,配置方法见 阮一峰大神的es6 最后几个章节(没看)

所以还不如直接使用配置文件、。。。

import Styles from 'style-loader!css-loader?modules!./styles.css';

cli:通过--module-bind 配置项

webpack --module-bind jade-loader --module-bind 'css=style-loader!css-loader'

loader 串联:

链式是按照相反的顺序执行,也就是说上面的实例会先执行css-loader 然后才是 css。

  • 除了使用 package.json 常见的 main 属性,还可以将普通的 npm 模块导出为 loader,做法是在 package.json 里定义一个 loader 字段。(还没弄清怎么配置

 

插件: loader 做不到的用插件

由于插件可以携带参数/选项,你必须在 webpack 配置中,向 plugins 属性传入 new 实例。(没闹明白)

 

配置:

因为配置文件本身是js 且基于标准的COMMONJS 规范,所以可以使用require函数导入模块,使用js表达式,定义常量、变量、执行函数等等。

 

webpack 模块能够以各种方式表达它们的依赖关系:

  • ES2015 import 语句
  • CommonJS require() 语句
  • AMD define 和 require 语句
  • css/sass/less 文件中的 @import 语句
  • 样式(url(...))或 HTML 文件(<img src=...>)中的图片链接(image url)

另外关于 node 中使用es2015的模块引入、import 和export,

node --experimental-modules es6_test.mjs

js后缀改为mjs、执行命令前需启动这个参数(执行会有提示,尚处于实验阶段,所以可以先不用,另外提及一下在浏览器中使用import模块的话需要增加module标识  type=“module”)

 

targets:

因为服务器和浏览器代码都可以用 JavaScript 编写,所以 webpack 提供了多种构建目标(target),你可以在你的 webpack 配置中设置。

打包2份-一个针对浏览器一个针对node

module.exports = {
  target: 'node'
};
var path = require('path');
var serverConfig = {
  target: 'node',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'lib.node.js'
  }
  //
};

var clientConfig = {
  target: 'web', // <=== 默认是 'web',可省略
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'lib.js'
  }
  //
};

module.exports = [ serverConfig, clientConfig ];

 

posted @ 2019-08-01 20:26  李鹏飞ONLINE  阅读(255)  评论(0编辑  收藏  举报