Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
next.js
提交
9c8d0465
N
next.js
项目概览
CoCo_Code_Op2
/
next.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
next.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
9c8d0465
编写于
1月 01, 2021
作者:
J
JJ Kasper
提交者:
GitHub
1月 01, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Ensure all entries are cleared from cache on runtime change (#20652)
上级
16d464ca
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
86 addition
and
26 deletion
+86
-26
.github/workflows/build_test_deploy.yml
.github/workflows/build_test_deploy.yml
+1
-1
packages/next/build/webpack/plugins/nextjs-require-cache-hot-reloader.ts
...uild/webpack/plugins/nextjs-require-cache-hot-reloader.ts
+18
-10
test/integration/ssr-ctx/context.js
test/integration/ssr-ctx/context.js
+5
-0
test/integration/ssr-ctx/pages/_app.js
test/integration/ssr-ctx/pages/_app.js
+9
-0
test/integration/ssr-ctx/pages/index.js
test/integration/ssr-ctx/pages/index.js
+8
-7
test/integration/ssr-ctx/test/index.test.js
test/integration/ssr-ctx/test/index.test.js
+45
-8
未找到文件。
.github/workflows/build_test_deploy.yml
浏览文件 @
9c8d0465
...
...
@@ -153,7 +153,7 @@ jobs:
-
run
:
cat package.json | jq '.resolutions."react-dom" = "^17.0.1"' > package.json.tmp && mv package.json.tmp package.json
-
run
:
yarn install --check-files
-
run
:
yarn list webpack react react-dom
-
run
:
xvfb-run node run-tests.js test/integration/
link-ref/test/index.test.js test/integration/production/test/index.test.js test/integration/basic/test/index.test.js test/integration/async-modules/test/index.test.js test/integration/font-optimization
/test/index.test.js test/acceptance/*.test.js
-
run
:
xvfb-run node run-tests.js test/integration/
{link-ref,production,basic,async-modules,font-optimization,ssr-ctx}
/test/index.test.js test/acceptance/*.test.js
testFirefox
:
name
:
Test Firefox (production)
...
...
packages/next/build/webpack/plugins/nextjs-require-cache-hot-reloader.ts
浏览文件 @
9c8d0465
...
...
@@ -38,20 +38,28 @@ export class NextJsRequireCacheHotReloader implements Plugin {
compilation
.
outputOptions
.
path
,
'
webpack-runtime.js
'
)
deleteCache
(
runtimeChunkPath
)
for
(
const
outputPath
of
this
.
previousOutputPathsWebpack5
)
{
if
(
!
this
.
currentOutputPathsWebpack5
.
has
(
outputPath
))
{
deleteCache
(
outputPath
)
}
}
this
.
previousOutputPathsWebpack5
=
new
Set
(
this
.
currentOutputPathsWebpack5
// we need to make sure to clear all server entries from cache
// since they can have a stale webpack-runtime cache
// which needs to always be in-sync
const
entries
=
[...
compilation
.
entries
.
keys
()].
filter
((
entry
)
=>
entry
.
toString
().
startsWith
(
'
pages/
'
)
)
this
.
currentOutputPathsWebpack5
.
clear
()
entries
.
forEach
((
page
)
=>
{
const
outputPath
=
path
.
join
(
compilation
.
outputOptions
.
path
,
page
+
'
.js
'
)
deleteCache
(
outputPath
)
})
})
this
.
previousOutputPathsWebpack5
=
new
Set
(
this
.
currentOutputPathsWebpack5
)
this
.
currentOutputPathsWebpack5
.
clear
()
return
}
...
...
test/integration/ssr-ctx/context.js
0 → 100644
浏览文件 @
9c8d0465
import
React
from
'
react
'
export
const
Idk
=
React
.
createContext
(
null
)
export
const
useIdk
=
()
=>
React
.
useContext
(
Idk
)
test/integration/ssr-ctx/pages/_app.js
0 → 100644
浏览文件 @
9c8d0465
import
{
Idk
}
from
'
../context
'
export
default
function
MyApp
({
Component
,
pageProps
})
{
return
(
<
Idk
.
Provider
value
=
"
hello world
"
>
<
Component
{...
pageProps
}
/
>
<
/Idk.Provider
>
)
}
test/integration/ssr-ctx/pages/index.js
浏览文件 @
9c8d0465
import
React
from
'
react
'
const
Idk
=
React
.
createContext
(
null
)
import
{
useIdk
}
from
'
../context
'
const
Page
=
()
=>
{
const
idk
=
useIdk
()
console
.
log
(
idk
)
return
(
<
div
>
<
Idk
.
Provider
value
=
"
hello world
"
>
<
Idk
.
Consumer
>
{(
idk
)
=>
<
p
>
Value
:
{
idk
}
<
/p>}</
Idk
.
Consumer
>
<
/Idk.Provider
>
<
/div
>
<>
<
p
>
Value
:
{
idk
}
<
/p
>
<
/
>
)
}
...
...
test/integration/ssr-ctx/test/index.test.js
浏览文件 @
9c8d0465
...
...
@@ -2,29 +2,66 @@
import
{
join
}
from
'
path
'
import
{
File
,
killApp
,
findPort
,
nextStart
,
nextBuild
,
renderViaHTTP
,
check
,
launchApp
,
}
from
'
next-test-utils
'
jest
.
setTimeout
(
1000
*
30
)
const
appDir
=
join
(
__dirname
,
'
../
'
)
const
appPg
=
new
File
(
join
(
appDir
,
'
pages/_app.js
'
))
let
appPort
let
app
describe
(
'
Production Usage
'
,
()
=>
{
beforeAll
(
async
()
=>
{
await
nextBuild
(
appDir
)
appPort
=
await
findPort
()
app
=
await
nextStart
(
appDir
,
appPort
)
})
afterAll
(()
=>
killApp
(
app
))
const
runTests
=
(
isDev
)
=>
{
it
(
'
should render a page with context
'
,
async
()
=>
{
const
html
=
await
renderViaHTTP
(
appPort
,
'
/
'
)
expect
(
html
).
toMatch
(
/Value: .*
?
hello world/
)
})
if
(
isDev
)
{
it
(
'
should render with context after change
'
,
async
()
=>
{
appPg
.
replace
(
'
hello world
'
,
'
new value
'
)
try
{
await
check
(()
=>
renderViaHTTP
(
appPort
,
'
/
'
),
/Value: .*
?
new value/
)
}
finally
{
appPg
.
restore
()
}
await
check
(()
=>
renderViaHTTP
(
appPort
,
'
/
'
),
/Value: .*
?
hello world/
)
})
}
}
describe
(
'
React Context
'
,
()
=>
{
describe
(
'
dev mode
'
,
()
=>
{
beforeAll
(
async
()
=>
{
appPort
=
await
findPort
()
app
=
await
launchApp
(
appDir
,
appPort
)
})
afterAll
(
async
()
=>
{
await
killApp
(
app
)
appPg
.
restore
()
})
runTests
(
true
)
})
describe
(
'
production mode
'
,
()
=>
{
beforeAll
(
async
()
=>
{
await
nextBuild
(
appDir
)
appPort
=
await
findPort
()
app
=
await
nextStart
(
appDir
,
appPort
)
})
afterAll
(()
=>
killApp
(
app
))
runTests
()
})
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录