npm 包 tersify 使用教程

前言

在前端开发中,我们经常需要使用 JavaScript 的压缩工具来减少代码文件的体积,并优化网页的加载速度。在这个问题上,一个非常流行的选项就是使用 terser。terser 是一个轻量级的并高效的 JavaScript 压缩器和混淆器,但是它也不是完美的。有时候,我们需要一些更具有自定义性的解决方案,尤其是在一些特定的情况下,例如对于需要加密的敏感信息等场景。在这个问题上,就可以考虑使用 tersify

tersify 是一个简单且易于使用的 npm 包,它基于 terser,并提供了更多的自定义选项和功能,让我们更加方便地实现我们所需要的效果。在本文中,我们将一步步地教你如何使用 tersify 中的各种功能,以及如何将其集成到你的项目中。

安装 tersify

在开始之前,我们需要先安装 tersify。你可以在命令行中通过 npm 来完成安装。只需要打开你的终端,输入以下命令即可:

--- ------- ------- ----------

这个命令将会安装 tersify 并添加它到你的项目中。

使用 tersify

在你使用 tersify 之前,你需要先创建一个 JavaScript 文件,例如 index.js,并将其导入到你的项目中。

-- --------
------------------- ---------

现在,我们将开始使用 tersify 来压缩这个文件。你可以使用以下命令来实现:

----- ------- - -------------------

----- --------- - --- ---------
  --------- -----
  ------- -----
  ------- -
    --------- ------
  --
---

----- ---- - -
  -- --------
  ------------------- ---------
--

-------------------------------------

上述代码的作用如下:

  • 第一行:导入了 tersify,以便我们使用它的各种功能。
  • 第三行:创建了一个 tersify 实例 tersifier,并指定了一些配置选项。
  • 第五行:定义了一个名为 code 的 JavaScript 代码字符串,本例中是我们要压缩的 index.js
  • 第七行:使用 tersify 实例的 tersify() 方法来压缩 code 中的 JavaScript 代码,并将压缩后的结果打印到控制台。

在上面的代码中,我们使用了 compressmangle 这两个配置选项来压缩变量名和函数名,并使用 output 中的 comments 属性来禁止生成注释。当然,这只是 tersify 配置选项的冰山一角。在接下来的章节中,我们将深入了解 tersify 的各种功能和选项。

tersify 常用配置选项

以下是 tersify 的常用配置选项列表:

  • compress: 指定是否压缩代码。
    • 类型:boolean。
    • 默认值:true。
  • mangle: 指定是否压缩函数名和变量名。
    • 类型:boolean。
    • 默认值:true。
  • output.comments: 指定是否生成注释。
    • 类型:boolean|'all'|'some'|Function。
    • 默认值:true。
  • output.indent_level: 指定缩进级别。
    • 类型:number。
    • 默认值:4。
  • output.max_line_len: 指定行的最大长度。
    • 类型:number。
    • 默认值:32000。
  • output.preserve_line: 指定是否保留原始代码中的换行符。
    • 类型:boolean。
    • 默认值:false。

接下来,我们将详细介绍每一个配置选项。

compress

compress 选项用于指定是否压缩代码,例如将它们转换为更短的变量名和函数名。如果你想要压缩代码,只需要将它设置为 true。否则,将它设置为 false。默认值是 true。

----- --------- - --- ---------
  --------- -----
---

mangle

mangle 选项用于指定是否压缩函数名和变量名。同样的,如果你想要压缩它们,请将 mangle 设置为 true。否则,将它设置为 false。默认值是 true。

----- --------- - --- ---------
  ------- -----
---

output.comments

output.comments 选项用于指定是否生成注释。可以将它设置为一个布尔值或一个函数。默认为 true。

如果将 output.comments 设置为 false,则 tersify 将从结果中删除所有注释。

----- --------- - --- ---------
  ------- -
    --------- ------
  --
---

output.indent_level

output.indent_level 选项用于指定缩进级别。默认值为 4。

----- --------- - --- ---------
  ------- -
    ------------- --
  --
---

output.max_line_len

output.max_line_len 选项用于指定行的最大长度。默认为 32000。

----- --------- - --- ---------
  ------- -
    ------------- ---
  --
---

output.preserve_line

output.preserve_line 选项用于指定是否保留原始代码中的换行符。默认为 false。

----- --------- - --- ---------
  ------- -
    -------------- -----
  --
---

示例

在本节中,我们将了解如何使用 tersify 来加密存储在 JavaScript 文件中的敏感数据。假设我们有一个名为 config.js 的文件,该文件包含 API 密钥等敏感信息。我们需要加密这些信息,以确保不被黑客攻击者获取。

首先,我们需要将 config.js 导入我们的 Node.js 应用程序,然后使用 tersify 将其加密。以下是完整的示例代码:

config.js 中添加以下内容:

-- ---------
-------------- - -
  -------- -----------
  ----------- -----------
--

app.js 中添加以下内容:

----- -- - --------------
----- ------- - -------------------
----- ------ - --------------------

----- --------- - --- ---------
  --------- -----
  ------- -
    ----------- -
      ------ ----- -- --- - ------
    --
  --
  ------- -
    --------- ------
  --
---

----- ---- - -
  -- --------- -----------
  -----------------------------------------
--

----- --------- - ------------------------

----------------------------- ---------- ------- ----- -- -
  -- ----- ----- ----
  ----------------------- --------
---

在上述代码中,我们创建了一个新的 tersify 实例,并将其作为 tersifier。接着,我们指定了一些选项,其中 mangle 属性可以帮助我们忽略所有以下划线 _ 开头的属性名,以保护它们不会被加密。output.comments 设置为 false,以删除掉所有的注释。最后,我们将 ${JSON.stringify(config)} 的代码字符串赋值给 code,并使用 tersify 实例的 tersify() 方法将其加密。加密后的内容将写入名为 config.min.js 的新文件中。

至此,我们已经成功将敏感数据加密了。将加密后的文件 config.min.js 应用于项目即可。

总结

在本文中,我们详细介绍了如何使用 npm 包 tersify 来压缩和加密 JavaScript 代码。我们了解了 tersify 的各种配置选项和功能,并深入探讨了如何使用它来保护存储在 JavaScript 文件中的敏感信息。希望这篇指南可以帮助你更好地理解 tersify,并帮助你在前端开发中实现更多自定义化的需求。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5f026857403f2923b035bd38


猜你喜欢

  • npm 包 @types/autosuggest-highlight 使用教程

    简介 在前端开发中,自动提示输入框(AutoSuggest)常常是我们需要实现的一个功能。而过去的 AutoSuggest 不够智能化,无法准确推荐词条。随着人工智能的不断发展,现在的 AutoSug...

    4 年前
  • npm 包 @codeceptjs/configure 使用教程

    在前端开发中,自动化测试是非常重要的一环。而测试框架 CodeceptJS 是一个颇具影响力的自动化测试工具之一。而其 npm 包 @codeceptjs/configure 则是为用户提供 Code...

    4 年前
  • npm 包 @codeceptjs/detox-helper 使用教程

    介绍 @codeceptjs/detox-helper 是一个 CodeceptJS 插件,为使用 Detox 进行前端自动化测试提供了帮助和支持。Detox 是一个 React Native 框架的...

    4 年前
  • npm 包 @codeceptjs/mock-request 使用教程

    前言 随着前端技术的发展和应用的广泛,软件的开发越来越需要前端工程师参与,这就需要前端工程师掌握一些需要和后端服务器交互的技术,比如:Ajax、Axios、fetch、mock 等。

    4 年前
  • npm 包 jsdoc-typeof-plugin 使用教程

    在前端开发工作中,代码的可读性和可维护性是非常重要的。为了让代码更容易被理解,我们需要添加适当的注释。对于 JavaScript 代码来说,我们通常使用 JSDoc 格式来添加注释。

    4 年前
  • npm包timer-node使用教程

    简介 在前端开发中,有很多定时器函数,如setTimeout()和setInterval()等。但是这些函数往往不够灵活、功能不够完整,而且容易出现BUG。为了解决这些问题,我们可以使用npm包ti...

    4 年前
  • npm 包 runio.js 使用教程

    前言 在前端开发过程中,经常需要写异步代码,如发送请求、做计算和读取文件等等。然而,回调和 Promise 都有代码可读性差和调试难的问题。近年来,Async/Await 成为了大家使用异步代码的标准...

    4 年前
  • npm 包 wdio-docker-service 使用教程

    在前端开发中,我们通常需要对不同的浏览器进行测试,以确保我们的网站在不同环境下都能正常运行。使用 docker 可以让我们快速地创建和启动不同的浏览器容器,而 wdio-docker-service ...

    4 年前
  • npm 包 codeceptjs 使用教程

    CodeceptJS 是一个基于 WebDriverJS 的使用更加友好的 UI 测试框架。 它使用行为驱动特性,可以运行在多个浏览器中,可以轻松地与各种不同的库(如 Appium、Protracto...

    4 年前
  • npm 包 eslint-plugin-codeceptjs 使用教程

    在 Web 前端开发中,我们经常会使用 eslint 工具对代码进行规范检查,以提高代码的可读性和维护性。而对于使用 CodeceptJS 进行 UI 自动化测试的项目,一个专门的 eslint 插件...

    4 年前
  • npm 包 eslint-plugin-verdaccio 使用教程

    简介 在前端开发中,我们经常会用到 npm 包,而 eslint-plugin-verdaccio 是一款与 npm 包 Verdaccio 相关的 eslint 插件。

    4 年前
  • npm 包 @verdaccio/ui-theme 使用教程

    介绍 @verdaccio/ui-theme 是一个基于 React 的 UI 组件库,用于构建与 Verdaiccio 相关的用户界面。如果你对 Verdaiccio 这个私有 npm 仓库管理工具...

    4 年前
  • npm 包 @graphql-tools/stitch 使用教程

    GraphQL 是一种用于 API 的查询语言,它可以把多个数据源(如数据库、REST API 等)整合到一个 API 中,提供给前端开发人员调用。而 @graphql-tools/stitch 就是...

    4 年前
  • Npm 包 Lunr-mutable-indexes 使用教程

    Lunr-mutable-indexes 是一个用于全文搜索的 Javascript 库,通常用于 Web 开发的前端部分。在这个库的基础上,Lunr-mutable-indexes npm 包则进一...

    4 年前
  • npm 包 @graphql-tools/wrap 使用教程

    前言 GraphQL 是一种新颖的 API 设计语言,其可以帮助我们轻松地定义数据结构,并拥有强大的查询功能。@graphql-tools/wrap 是一个非常有用的 npm 包,其可以在 Graph...

    4 年前
  • npm 包 @verdaccio/file-locking 使用教程

    前言 在多个进程/线程同时读/写同一个文件时,可能会发生冲突。为了避免这种情况,我们需要加锁。@verdaccio/file-locking 就是一个用于加锁的 npm 包。

    4 年前
  • npm 包 verdaccio-htpasswd 使用教程

    verdaccio-htpasswd 是 verdaccio 的一个插件,它提供了一个基于用户名和密码的身份验证方式,可以有效地帮助开发人员保护他们的私有 npm 包。

    4 年前
  • npm包 detect-secrets 使用教程

    Detect-secrets是现代软件项目的安全代码审查工具。 它由Great Scott Gadgets开发,可以通过扫描代码库以查找硬编码密码,API密钥和其他机密信息来帮助保护其秘密。

    4 年前
  • npm 包 verdaccio-memory 使用教程

    前言 在前端开发中,我们经常需要使用 npm 包作为依赖项。而其中一个常见的问题是,在进行多人协作开发或者在公司内部部署 npm 私服时,我们可能需要下载或者安装私有的 npm 包。

    4 年前
  • NPM包Totalist使用教程

    如果你是一名开发者,特别是前端开发者,你肯定已经听说过NPM。NPM是一个用于Node.js包管理的命令行工具,具有强大的生态系统,可以轻松地在你的项目中安装依赖项,以及在全局上共享你的代码。

    4 年前

相关推荐

    暂无文章