# NativeScript CLI 6.0 中的更新:默认情况下捆绑工作流,仅 Webpack 和 HMR

·

NativeScript 6.0 仅适用于 webpack!现在,NativeScript CLI 依靠 webpack 来构建您的应用程序代码。

# 之前

在 6.0 版之前,NativeScript 支持两种构建项目的方式:

  • tns build- 传统工作流程,它复制源代码目录(“ src /”)的全部内容;

  • tns build --bundle- 在 Bundle 工作流程,其依赖于的 WebPack 捆绑源代码目录(“ SRC /”)到几个输出文件。

捆绑包工作流位于捆绑包标志后面。您不仅可以在构建过程中使用它,还可以在开发过程中使用它:

tns run --bundle
tns preview --bundle
tns debug --bundle
tns test --bundle

捆绑软件工作流程还支持使用 hmr 标志替换热模块。

tns run --bundle --hmr

# 仅限 Webpack

从 6.0 版开始,NativeScript CLI 仅支持 webpack 的捆绑工作流程。旧版工作流程不再可用。现在,所有构建应用程序代码的 CLI 命令都使用捆绑工作流程:

tns build
tns run
tns preview
tns prepare
tns debug
tns test

# 该束标志

您仍然可以将捆绑标志提供给上述任何命令。它不会以任何方式改变他们的行为。但是,您不能关闭捆绑包标志,也不能禁用捆绑包工作流程。

# 将同步所有文件标志

将同步所有文件标志不再可用。提供它用于监视 node_modules 目录中的更改并在开发过程中使其同步。使用捆绑软件工作流程,该工作将自动完成。监视文件的工作流程是:

  1. Webpack 监视源代码中所需的所有文件,而不管它们的位置(应用程序或 node_modules);

  2. NativeScript CLI 开始监视本机文件:

  • App_Resources 中的文件
  • nativescript 插件的平台目录
  • nativescript 插件的 package.json 文件
  1. NativeScript CLI 还监视应用程序的 package.json 文件(my-project/package.jsonmy-project/app/package-json)。

# 默认情况下更换热模块

现在默认情况下启用热模块更换。现在,以下命令可用于 HMR:

tns run
tns preview
tns debug [android|ios]

您可以使用 no-hmr 标志禁用热模块更换:

tns run --no-hmr
tns preview --no-hmr
tns debug [android|ios] --no-hmr

NativeScript 团队强烈建议在应用程序开发期间使用热模块替换。HMR 可以大大减少更改之间的重新加载时间,并改善您的开发经验。

有关 NativeScript 中的 HMR 的更多信息,请查看“深度学习”博客文章系列。

# 以生产模式构建

Webpack 有两种编译模式 -开发和生产。默认模式是开发。

在 NativeScript 6.0 之前,提供用于启用生产模式的 env.uglify 标志。

# Webpack builds in production mode
tns build --bundle --env.uglify

在 NativeScript 6.0 中,提供发布标志将启用生产模式。该 env.uglify 标志已不改变编译模式。它仅告诉 webpack 使用 TerserPlugin 最小化捆绑包。

# Webpack builds in production mode
tns build --release --keyStorePath ~/my.keystore --keyStorePassword myPass --keyStoreAlias myAlias --keyStoreAliasPassword myAliasPass
# Webpack builds in development mode
tns build --bundle --env.uglify

# nativescript-dev-webpack 1.0

nativescript-dev-webpack 是包含与 webpack 相关的所有构建逻辑的软件包。每个 NativeScript 6.0 项目都需要依赖该软件包,该软件包现在具有其第一个稳定版本 -1.0!

# 钩子

所述 nativescript-DEV-的 WebPack 包插头插入使用钩 NativeScript CLI 构建。将 CLI 迁移到捆绑工作流程需要对 hooks API 进行更改。其中某些可能无法使用 NativeScript 插件。有关更多信息,请查看有关将 CLI 挂钩迁移到 NativeScript 6.0 的博客文章。