所有分类
  • 所有分类
  • 后端开发

webpack4开发利器,源文件如何塞进流程?一句设置搞定

小伙伴们,今天要聊点有趣的~ 你们是不是好奇如何把源文件塞到webpack流程里去?其实一点儿都不复杂,就跟着我咋做!

module.exports = {
 entry: `./index.js`,
}

module.exports = {
 entry: { 
  "index": `./index.js`,
 },
}

// 使用 glob 等工具使用若干通配符,运行时获得 entry 的条目
module.exports = {
 entry: glob.sync('./project/**/index.js').reduce((acc, path) => {
  const entry = path.replace('/index.js', '')
  acc[entry] = path
  return acc
 }, {}),
}

不清楚 webpack 怎么自动找入口文件?超级容易的,就在webpack的设置文件里敲上一句就成了!给 project 子目录中的 index.js 都设定成入口文件,这样你再建新项目只需要随便加个子目录,再安个 index.js 文件成入口就搞定了,省时省力超便捷!

npm run build --project components

// 解析命令行参数
const argv = require('minimist')(process.argv.slice(2))
// 项目
const project = argv['project'] || 'index'

现在,我们得搞明白webpack怎样输出我们的代码,包括文件名和位置之类的东西。既然说到webpack 4的output.pathinfo功能,那咱们就赶紧尝试一下。它可是个非常实用的小玩意儿,会在输出结果里添加上一些有用的提示信息。而且,咱要是用eval这种开发工具的话,这功能还能帮我们快速找到出错的原因~

module.exports = {
 entry: { 
  "index": `./${project}/index.js`,
 } 
}

module.exports = {
 entry: { 
  "index": `./components/index.js`,
 } 
}

webpack4开发利器,源文件如何塞进流程?一句设置搞定

讲Webpack打包时,得说说那个HASH,它每次打包都会生出个独一无二的哈希值,不管文件塞的啥。这货儿就是这次建构的标志,嘞也是浏览器缓存找不到的那种!不过别忘了,这东西在开发阶段特管用,实际运营了不太需要。

module.exports = {
 output: { 
  // path 必须为绝对路径
  // 输出文件路径
  path: path.resolve(__dirname, '../../dist/build'),
  // 包名称
  filename: "[name].bundle.js",
  // 或使用函数返回名(不常用)
  // filename: (chunkData) => {
  //  return chunkData.chunk.name === 'main' ? '[name].js': '[name]/[name].js';
  // },
  // 块名,公共块名(非入口)
  chunkFilename: '[name].[chunkhash].bundle.js',
  // 打包生成的 index.html 文件里面引用资源的前缀
  // 也为发布到线上资源的 URL 前缀
  // 使用的是相对路径,默认为 ''
  publicPath: '/', 
 }
}

问你们个事儿,能用webpack4来开发吗?当然能用只要设置好开启模块化运行的mode和要加载的文件的entry这两样东西,而且它还内建了许多优化方案。连环境变量这种小破事也全交Webpack处理得了√

还得提醒大家,虽然webpack4能帮咱们自动设置process.env.NODE_ENV,但是别的地方要是也需要这个环境变量的话,默认的那个’production’就可能给咱们带来麻烦了。所以,咱们在运用它时还是小心点好!

module.exports = {
 output: { 
  // path 必须为绝对路径
  // 输出文件路径
  path: path.resolve(__dirname, '../../dist/build'),
  // 包名称
  filename: "[name].bundle.js",
  // 块名,公共块名(非入口)
  chunkFilename: '[name].[chunkhash].bundle.js',
  // 打包生成的 index.html 文件里面引用资源的前缀
  // 也为发布到线上资源的 URL 前缀
  // 使用的是相对路径,默认为 ''
  publicPath: '/', 
  // 一旦设置后该 bundle 将被处理为 library
  library: 'webpackNumbers',
  // export 的 library 的规范,有支持 var, this, commonjs,commonjs2,amd,umd
  libraryTarget: 'umd',
 }
}

想问问你们怎么解决项目里面各种模块的问题吗?别着急,就在 module.rules那儿改几个字就好!忘了拆包捆包也没关系,只要把 chunks: all设置成true,那么整个node_modules的文件夹都可以直接扔到一个叫vendors~main.js的文件里去。

module.exports = {
 // 可以是 none、development、production
 // 默认为 production
 mode: 'production'
}

终于搞完了,是不是觉得自己学到了很多?希望我这篇文章给你带来点新思路。有任何想问的问题或看法,直接在评论区留言,大家一起来聊聊!别忘记给个赞,分享出去让更多人看到今天咱们聊聊Webpack是怎么把代码搬进网页里的,还有它解决各种难题的办法多厉害。瞅了半天,发现Webpack会自动挑选进出的文件,随时修改输出的内容,又有防篡改的Hash功能,甚至不用怎么设置就能用,模块啥的通吃。希望这些小tips对你们能用上,记得踊跃发发言关注我们的微信公众号,点个赞分享出去,让更多人受益

"build:prod": "webpack --config config/webpack.prod.config.js --mode production"

// webpack.prod.config.js
module.exports = {
 mode: 'production',
}

原文链接:https://www.icz.com/technicalinformation/web/html5/2024/03/11292.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?