根据环境在缩小代码和普通代码之间切换?

问题描述 投票:0回答:1

目前使用 grunt 来缩小我的所有 js 文件。我的 html 中有一个 php 脚本,用于检查 url 并决定是否包含一个大的缩小的 javascript 文件或所有常规 javascript 文件。这很烦人,因为我在两个地方列出了所有文件;一次在 grunt 文件中,一次在我的 php 脚本的 switch 语句中。如果团队中的某个人向一个文件添加了新文件,但没有向另一个文件添加新文件,就会发生不好的事情。有没有更简单、更有效的方法来在两者之间进行切换?我们希望我们的生产服务器使用缩小的代码,而我们的本地开发环境使用未缩小的代码。

javascript gruntjs minify
1个回答
0
投票

我在那里看到三个选项。

  1. 您可以托管网站的两个版本:一种用于生产,一种用于开发。开发将依赖于未缩小的源文件。请务必对“常规”和“缩小”文件使用相同的文件名,因为只有它们的内容应该改变。这将帮助您避免保留两个不同的源库。
+ mysite-dev
  + scripts
    - myscript.min.js (the non-minified content)
  index.html

+ mysite-prod
  + scripts
    - myscript.min.js (the minified content)
  index.html
  1. 您可以将所有常规文件和缩小文件放在一个位置并创建符号链接,以便您的网站根据开发/产品配置提供文件。
+ mysite
  + scripts-all
    - myscript.js
    - myscript.min.js
  + scripts
    - myscript.js > ../scripts-all/myscript.min.js
  index.html
  1. 您可以创建一个脚本来选择正确的文件名。例如,如果您运行开发网站,脚本将选择“常规”文件。如果您运行生产网站,则只有此脚本会更改,以便它选择“缩小的”文件。 您可以在所有网站中使用经过压缩的文件名。然后在原始副本之间切换(按顺序)。请注意,此选项与您在问题中提出的选项类似。
+ mysite
  + scripts-all
    - myscript.js
    - myscript.min.js
  + scripts
    - version-prod.js
    - version-dev.js
    - version.js > version-prod.js
  index.html
  1. 我的方式..

就我而言,当我发布网站时,我有一个 bash 脚本,它基于 JSON 描述文件构建网站结构和用于开发和生产的文件。

JSON 描述定义了要提供的所有文件,并告知它们是否必须缩小。

[
  {
    "file": "./index.html",
    "minify": false
  },
  {
    "file": "./scripts/app.js",
    "minify": true
  },
  ...
]

bash 脚本处理描述,缩小必须缩小的文件,并将结果文件复制到两个不同的目录。 “开发”文件保持原样,而“生产”文件则缩小。

+ release
  + production
  + development

然后我选择要公开的版本(参见:解决方案#1)。这让我可以维护一个单一的代码库,该代码库根据目标发布类型(开发/生产)进行缩小(或不缩小)。

注意:对于这种情况,似乎没有真正干净的解决方案,因为所提供的文件的名称可能与其内容不一致(即:

.min
对于非缩小文件)。

© www.soinside.com 2019 - 2024. All rights reserved.