自定义封装loader时碰到一个关于JS的问题

题目描述

自定义封装loader时碰到一个关于JS的问题。想要自己封装一个loader实现每次打包代码都自动在代码里加上两个console来作为标记,其中有一个就是获取当前时间,本来想着每次打包后运行控制台中看到的时间都会不一样,结果每次时间都会一样,但是隔一段时间打包就会不一样。效果如下:

[mark] buildTime:2019-12-19 22:09:41

相关代码


function getNormalTime() {
  let curTime = new Date(Date.now() + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').split(
    '.')[
    0]
  let info = `
    console.info('[mark] buildTime:${curTime}')
    console.info('[mark] buildAuthor:${process.env.USER}')
  `
  return info
}

function addInfo(str) {
  const regex = /(\$mount\('#app'\);)/g;

  return str.replace(regex, '$1' + getNormalTime())
}
module.exports = function (source) {
  return addInfo(source)
}

所以我很不理解为什么会不一样?要怎么才能让我每一次打包时间输出都不一样?谢谢大佬解惑!

阅读 2k
2 个回答

目标文件没有发生变化,结果被缓存了吧。

只是输出打包时间直接在 webpack.config.js 里写就好了,不需要这么复杂。

原因应该是楼上指出的.

所以不走webpack体系就完了.

npm script支持pre钩子.
假设你的构建命令是build,添加prebuild命令,然后把你的脚本改改,直接手动用fs改写对应的js即可.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题