如何以编程方式将tampermonkey脚本更新为本地文件?

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

出于安全原因,Tampermonkey脚本不会保存在可访问文件中,而是保存在插件数据中。现场编辑它们的唯一方法是使用Tampermonkey的集成编辑器。

但是,我宁愿使用IDE,还有它的所有功能。我还想使用webpack从多个文件中打包脚本。

为此,我需要一种方法以编程方式将Tampermonkey中的脚本更改为新版本。到目前为止,我所做的是手动将新脚本复制并粘贴到Tampermonkey的编辑器中,这真的让人筋疲力尽。

那么如何以编程方式更改Tampermonkey脚本源代码?

javascript tampermonkey
1个回答
3
投票

我在另一个问题上有given my answer。但由于它非常相似和令人沮丧,我会把它放在这里寻找帮助的下一个人。

没有复制和粘贴,即时更新,纯粹的幸福:

  1. 转到Chrome => Extensions并找到TamperMonkey'卡'。点击详情。在打开的页面上,允许它访问文件URL:

enter image description here

  1. 将整个脚本保存在文件系统中的任何位置,包括==UserScript==标头。这适用于所有桌面操作系统,但由于我使用macOS,我的路径将是:/Users/me/Scripts/SameWindowHref.user.js
  2. 现在,转到TM的仪表板,在编辑器中编辑脚本并删除除==UserScript==标题之外的所有内容
  3. 添加到标题的@require属性指向脚本的绝对路径。在我的例子中,TamperMonkey编辑器如下所示:

enter image description here

现在每次该脚本匹配时,TamperMonkey将直接从您的磁盘加载代码,位于您在@require中提供的系统路径。

我使用VSCode(可以说是有史以来最好的多平台代码编辑器。而且是免费的),这就是我在脚本上工作的地方,但任何文本编辑器都可以。它应该如下所示:

enter image description here(我很抱歉,在这张截图中,@require路径应该读取/Users/me/Scripts/SameWindowHref.user.js就像我们在TM编辑器中设置的路径一样)

代码中的每个更改都由此编辑器自动保存,因此请记得在进入浏览器进行测试之前保存它。

您仍然需要在每次更改时重新加载网站,但您可以使用https://www.browsersync.io之类的内容轻松实现自动化。 Git也将在开发过程中提供帮助。当我编辑用户脚本时,我只需编写代码,并在浏览器中查看结果,无需重复操作!它很容易设置。

请分享你所有的创作:)

Bonus tips!

1)使用Git或其他SCM

您必须包含一个@updateURL标记,后跟包含原始文件的URL。请注意,需要使用@version标记才能进行更新检查。绝大多数用户不需要@downloadURL标签,所以除非你的脚本有大量的跟随者基础,否则只需使用@updateURL。像这样:

// @updateURL   https://github.com/jerone/UserScripts/raw/master/Github_Comment_Enhancer/Github_Comment_Enhancer.user.js
// @version     2.9.0

TM将根据设置选项卡中的配置检查更新:

enter image description here

Externals设置从脚本的@require调用的脚本检查更新的频率(例如jQuery)。

您还可以“强制”更新检查:

enter image description here

2)如果你想使用外部脚本(如jQuery)

它必须至少存在于TM的编辑器中才能加载Chrome,但我强烈建议您将两个标题(TM和磁盘标题上的文件)保持完全相同以避免混淆。像这样:

// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js
// @require      /Users/me/STUFF/Code/Scripts/SameWindowHref.user.js

3)我从来没有需要这个(虽然我不使用Windows),但为了以防万一,如果它不适合你,请在路径的开头添加file:// URI scheme。例如:

// @require      file://C:\Blah\bleh\userscript.user.js
© www.soinside.com 2019 - 2024. All rights reserved.