image.png

node内置模块-path: https://nodejs.org/dist/latest-v12.x/docs/api/path.html

  1. 在模块化代码中,require(‘./‘),表示js所在的目录
  2. 在路径处理中,’./‘表示node运行目录,在那个目录下运行了node命令
  3. __dirname: 所有的情况下,都表示当前运行的js文件所在的目录,是一个绝对路径

    出口

这里的出口是针对资源里列表的文件名或路径配置
出口通过output进行配置

  1. var path=require('path');
  2. module.expors={
  3. mode:'development,
  4. output:{
  5. path:path.resolve(__.dirname,'target') ,//必须配置一个绝对路径,表示资源放置的文件夹,默认是dist
  6. filename:'boundle.js' ,//合并的js文件的规则,静态规则,(生成的js文件,或者文件夹在path下面)
  7. }
  8. }

入口

入口真正配置的是chunk
入口通过entry配置

规则:

  • name:chunkname,
  • hash:总的资源hash,通常用来解决缓问题(文件名没变,内容变了,导致浏览器缓存的文件会被继续使用),问题当其中一个chunk发生变化的时候,多有的chunk的名字都会被重新hash修改
  • chunkhash: 使用每一个chunk的hash值,好处当其中一个没有变化的时候,可以继续使用之前hash值
  • id: 使用chunkid作为输出文件的名字,问题:开发环境是id,生产环境是数字,不推荐使用
  1. var path=require('path');
  2. module.expors={
  3. mode:'development,
  4. entry:{
  5. main:'./src/index.js', //属性名:chunk名称,属性值:入口模块(启动模块)
  6. // a:'./src/a.js',
  7. a:['./src/a.js','./src/index.js'] //一个chunk,多个入口模块(启动模块)
  8. }
  9. output:{
  10. path:path.resolve(__.dirname,'target') ,//必须配置一个绝对路径,表示资源放置的文件夹,默认是dist
  11. //filename:'boundle.js' ,//合并的js文件的规则,静态规则,静态规则不能使用在多入口的配置中,(生成的js文件,或者文件夹在path下面)
  12. filemame:'[name].js' //动态配置,在多入口的配置中,取入口的文件名作为输出资源的文件名
  13. filemame:'[name].[hash:5].js' //生成固定长度的变化hash值作为文件名
  14. }
  15. }