Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
next.js
提交
1810cf5a
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,发现更多精彩内容 >>
未验证
提交
1810cf5a
编写于
4月 09, 2019
作者:
J
Joe Haddad
提交者:
GitHub
4月 09, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add an experimental mode for flyingShuttle (#6985)
上级
f301c4f0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
21 deletion
+28
-21
packages/next-server/server/config.js
packages/next-server/server/config.js
+2
-1
packages/next/build/index.ts
packages/next/build/index.ts
+16
-10
packages/next/build/webpack-config.ts
packages/next/build/webpack-config.ts
+10
-10
未找到文件。
packages/next-server/server/config.js
浏览文件 @
1810cf5a
...
...
@@ -30,7 +30,8 @@ const defaultConfig = {
),
ampBindInitData
:
false
,
exportTrailingSlash
:
true
,
profiling
:
false
profiling
:
false
,
flyingShuttle
:
false
}
}
...
...
packages/next/build/index.ts
浏览文件 @
1810cf5a
...
...
@@ -57,14 +57,15 @@ function getPossibleFiles(pageExtensions: string[], pages: string[]) {
export
async
function
getSpecifiedPages
(
dir
:
string
,
pages
:
string
[],
pageExtensions
:
string
[]
pageExtensions
:
string
[],
assumeAll
:
boolean
)
{
const
pagesDir
=
path
.
join
(
dir
,
'
pages
'
)
const
reservedPages
=
[
'
/_app
'
,
'
/_document
'
,
'
/_error
'
]
pages
.
push
(...
reservedPages
)
const
searchAllPages
=
pages
.
some
(
p
=>
p
.
includes
(
'
**
'
))
const
searchAllPages
=
assumeAll
||
pages
.
some
(
p
=>
p
.
includes
(
'
**
'
))
let
pagePaths
:
string
[]
const
explodedPages
=
[
...
...
@@ -157,17 +158,22 @@ export default async function build(
?
[
process
.
env
.
__NEXT_BUILDER_EXPERIMENTAL_PAGE
]
:
[]
const
__
selectivePageBuilding
=
pages
?
Boolean
(
pages
.
length
)
:
false
const
selectivePageBuilding
=
pages
?
Boolean
(
pages
.
length
)
:
false
if
(
__
selectivePageBuilding
&&
config
.
target
!==
'
serverless
'
)
{
if
(
selectivePageBuilding
&&
config
.
target
!==
'
serverless
'
)
{
throw
new
Error
(
'
Cannot use selective page building without the serverless target.
'
)
}
let
pagePaths
if
(
__selectivePageBuilding
)
{
pagePaths
=
await
getSpecifiedPages
(
dir
,
pages
,
config
.
pageExtensions
)
if
(
selectivePageBuilding
)
{
pagePaths
=
await
getSpecifiedPages
(
dir
,
pages
,
config
.
pageExtensions
,
config
.
experimental
.
flyingShuttle
)
}
else
{
pagePaths
=
await
collectPages
(
pagesDir
,
config
.
pageExtensions
)
}
...
...
@@ -176,7 +182,7 @@ export default async function build(
mappedPages
,
config
.
target
,
buildId
,
__
selectivePageBuilding
,
selectivePageBuilding
,
config
)
const
configs
=
await
Promise
.
all
([
...
...
@@ -187,7 +193,7 @@ export default async function build(
config
,
target
:
config
.
target
,
entrypoints
:
entrypoints
.
client
,
__
selectivePageBuilding
,
selectivePageBuilding
,
}),
getBaseWebpackConfig
(
dir
,
{
debug
,
...
...
@@ -196,7 +202,7 @@ export default async function build(
config
,
target
:
config
.
target
,
entrypoints
:
entrypoints
.
server
,
__
selectivePageBuilding
,
selectivePageBuilding
,
}),
])
...
...
@@ -255,5 +261,5 @@ export default async function build(
printTreeView
(
Object
.
keys
(
mappedPages
))
await
writeBuildId
(
distDir
,
buildId
,
__
selectivePageBuilding
)
await
writeBuildId
(
distDir
,
buildId
,
selectivePageBuilding
)
}
packages/next/build/webpack-config.ts
浏览文件 @
1810cf5a
...
...
@@ -18,7 +18,7 @@ import { ChunkGraphPlugin } from './webpack/plugins/chunk-graph-plugin'
import
{
WebpackEntrypoints
}
from
'
./entries
'
type
ExcludesFalse
=
<
T
>
(
x
:
T
|
false
)
=>
x
is
T
export
default
function
getBaseWebpackConfig
(
dir
:
string
,
{
dev
=
false
,
debug
=
false
,
isServer
=
false
,
buildId
,
config
,
target
=
'
server
'
,
entrypoints
,
__selectivePageBuilding
=
false
}:
{
dev
?:
boolean
,
debug
?:
boolean
,
isServer
?:
boolean
,
buildId
:
string
,
config
:
any
,
target
?:
string
,
entrypoints
:
WebpackEntrypoints
,
__
selectivePageBuilding
?:
boolean
}):
webpack
.
Configuration
{
export
default
function
getBaseWebpackConfig
(
dir
:
string
,
{
dev
=
false
,
debug
=
false
,
isServer
=
false
,
buildId
,
config
,
target
=
'
server
'
,
entrypoints
,
selectivePageBuilding
=
false
}:
{
dev
?:
boolean
,
debug
?:
boolean
,
isServer
?:
boolean
,
buildId
:
string
,
config
:
any
,
target
?:
string
,
entrypoints
:
WebpackEntrypoints
,
selectivePageBuilding
?:
boolean
}):
webpack
.
Configuration
{
const
defaultLoaders
=
{
babel
:
{
loader
:
'
next-babel-loader
'
,
...
...
@@ -135,7 +135,7 @@ export default function getBaseWebpackConfig (dir: string, {dev = false, debug =
splitChunks
:
false
,
minimize
:
false
}
:
{
runtimeChunk
:
__
selectivePageBuilding
?
false
:
{
runtimeChunk
:
selectivePageBuilding
?
false
:
{
name
:
CLIENT_STATIC_FILES_RUNTIME_WEBPACK
},
splitChunks
:
dev
?
{
...
...
@@ -143,7 +143,7 @@ export default function getBaseWebpackConfig (dir: string, {dev = false, debug =
default
:
false
,
vendors
:
false
}
}
:
__
selectivePageBuilding
?
{
}
:
selectivePageBuilding
?
{
cacheGroups
:
{
default
:
false
,
vendors
:
false
,
...
...
@@ -175,11 +175,11 @@ export default function getBaseWebpackConfig (dir: string, {dev = false, debug =
new
TerserPlugin
({...
terserPluginConfig
,
terserOptions
:
{
safari10
:
true
,
...(
__
selectivePageBuilding
?
{
compress
:
false
,
mangle
:
true
}
:
undefined
)
...(
selectivePageBuilding
?
{
compress
:
false
,
mangle
:
true
}
:
undefined
)
}
})
]
:
undefined
,
},
__
selectivePageBuilding
?
{
},
selectivePageBuilding
?
{
providedExports
:
false
,
usedExports
:
false
,
concatenateModules
:
false
,
...
...
@@ -224,7 +224,7 @@ export default function getBaseWebpackConfig (dir: string, {dev = false, debug =
// @ts-ignore this is filtered
module
:
{
rules
:
[
__
selectivePageBuilding
&&
!
isServer
&&
{
selectivePageBuilding
&&
!
isServer
&&
{
test
:
/
\.(
js|mjs|jsx
)
$/
,
use
:
{
loader
:
'
next-minify-loader
'
,
...
...
@@ -277,7 +277,7 @@ export default function getBaseWebpackConfig (dir: string, {dev = false, debug =
!
isServer
&&
new
ReactLoadablePlugin
({
filename
:
REACT_LOADABLE_MANIFEST
}),
!
isServer
&&
__
selectivePageBuilding
&&
new
ChunkGraphPlugin
(
buildId
,
path
.
resolve
(
dir
),
{
filename
:
CHUNK_GRAPH_MANIFEST
}),
!
isServer
&&
selectivePageBuilding
&&
new
ChunkGraphPlugin
(
buildId
,
path
.
resolve
(
dir
),
{
filename
:
CHUNK_GRAPH_MANIFEST
}),
...(
dev
?
(()
=>
{
// Even though require.cache is server only we have to clear assets from both compilations
// This is because the client compilation generates the build manifest that's used on the server side
...
...
@@ -316,12 +316,12 @@ export default function getBaseWebpackConfig (dir: string, {dev = false, debug =
!
dev
&&
new
webpack
.
HashedModuleIdsPlugin
(),
// This must come after HashedModuleIdsPlugin (it sets any modules that
// were missed by HashedModuleIdsPlugin)
!
dev
&&
__
selectivePageBuilding
&&
new
AllModulesIdentifiedPlugin
(
dir
),
!
dev
&&
selectivePageBuilding
&&
new
AllModulesIdentifiedPlugin
(
dir
),
// This sets chunk ids to be hashed versions of their names to reduce
// bundle churn
!
dev
&&
new
HashedChunkIdsPlugin
(
buildId
),
// On the client we want to share the same runtime cache
!
isServer
&&
__
selectivePageBuilding
&&
new
SharedRuntimePlugin
(),
!
isServer
&&
selectivePageBuilding
&&
new
SharedRuntimePlugin
(),
!
dev
&&
new
webpack
.
IgnorePlugin
({
checkResource
:
(
resource
:
string
)
=>
{
return
/react-is/
.
test
(
resource
)
...
...
@@ -330,7 +330,7 @@ export default function getBaseWebpackConfig (dir: string, {dev = false, debug =
return
/next-server
[\\/]
dist
[\\/]
/
.
test
(
context
)
||
/next
[\\/]
dist
[\\/]
/
.
test
(
context
)
}
}),
target
===
'
serverless
'
&&
(
isServer
||
__
selectivePageBuilding
)
&&
new
ServerlessPlugin
(
buildId
,
{
isServer
}),
target
===
'
serverless
'
&&
(
isServer
||
selectivePageBuilding
)
&&
new
ServerlessPlugin
(
buildId
,
{
isServer
}),
target
!==
'
serverless
'
&&
isServer
&&
new
PagesManifestPlugin
(),
target
!==
'
serverless
'
&&
isServer
&&
new
NextJsSSRModuleCachePlugin
({
outputPath
}),
isServer
&&
new
NextJsSsrImportPlugin
(),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录