观看 package.json,将版本添加到捆绑包
Watch package.json, add version to the bundle
我正在将库与汇总捆绑在一起,并尝试将 package.json 中的一个版本添加到代码本身。
汇总配置的相关位:
import pkg from './package.json'
output: [{
footer: `foo.version = '${pkg.version}'`
}]
问题是,hotreload/watch 没有更新它。 (rollup -w -c rollup.development.config.js')
尝试了一些东西:
- 使用输出插件:他们不会 运行 再次观看
- 在页脚中进行动态导入:也不会再 运行ning
- 要包含的自定义观察器插件 package.json:这会触发重新加载,但仍不会 运行 将读取更新值(插件或页脚)的代码
有办法吗?我不介意在 package.json 更改时进行完全重建,但我想避免手动重新启动该过程。坦率地说,我很困惑这么简单的事情怎么会这么复杂。
谢谢
编辑:
即使我这样做,版本也没有更新:
const getVersion = () => ({
async renderStart () {
const data = await import('./package.json')
console.log('version: ' + data.version)
}
})
export default async () => ({
output: [{
plugins: [getVersion()]
}]
})
以为它是一个缓存,所以我尝试用 ?date=' + Date.now() 使它无效,但这只会给我错误:找不到模块 './package.json?test= 1652969298057'。好像汇总正在使用 require :(
想通了:
rollup.config.js
import glob from 'glob'
import path from 'path'
import fs from 'fs'
const watcher = (globs) => ({
buildStart () {
for (const item of globs) {
glob.sync(path.resolve(item)).forEach((filename) => { this.addWatchFile(filename) })
}
}
})
const updateVersion = () => ({
renderStart (outputOptions, inputOptions) {
outputOptions.footer = () => `cpexPackage.version = ' + ${JSON.parse(fs.readFileSync('package.json', 'utf8')).version}'`
}
})
export default {
plugins: [
watcher(['package.json'])
],
output: [{
plugins: [
updateVersion()
]
}]
}
我正在将库与汇总捆绑在一起,并尝试将 package.json 中的一个版本添加到代码本身。
汇总配置的相关位:
import pkg from './package.json'
output: [{
footer: `foo.version = '${pkg.version}'`
}]
问题是,hotreload/watch 没有更新它。 (rollup -w -c rollup.development.config.js')
尝试了一些东西:
- 使用输出插件:他们不会 运行 再次观看
- 在页脚中进行动态导入:也不会再 运行ning
- 要包含的自定义观察器插件 package.json:这会触发重新加载,但仍不会 运行 将读取更新值(插件或页脚)的代码
有办法吗?我不介意在 package.json 更改时进行完全重建,但我想避免手动重新启动该过程。坦率地说,我很困惑这么简单的事情怎么会这么复杂。 谢谢
编辑: 即使我这样做,版本也没有更新:
const getVersion = () => ({
async renderStart () {
const data = await import('./package.json')
console.log('version: ' + data.version)
}
})
export default async () => ({
output: [{
plugins: [getVersion()]
}]
})
以为它是一个缓存,所以我尝试用 ?date=' + Date.now() 使它无效,但这只会给我错误:找不到模块 './package.json?test= 1652969298057'。好像汇总正在使用 require :(
想通了:
rollup.config.js
import glob from 'glob'
import path from 'path'
import fs from 'fs'
const watcher = (globs) => ({
buildStart () {
for (const item of globs) {
glob.sync(path.resolve(item)).forEach((filename) => { this.addWatchFile(filename) })
}
}
})
const updateVersion = () => ({
renderStart (outputOptions, inputOptions) {
outputOptions.footer = () => `cpexPackage.version = ' + ${JSON.parse(fs.readFileSync('package.json', 'utf8')).version}'`
}
})
export default {
plugins: [
watcher(['package.json'])
],
output: [{
plugins: [
updateVersion()
]
}]
}