最近任务不忙,有时间了看一下Chrome插件相关的东西,于是想用nodejs + webpack写一个能直出插件的小工具。

1.nodejs + babel6 + webpack4

在写之前,是有把它写成依赖包之类的工具的,但是现在处于编码调试阶段,各个部分还没有进行封装,只是实现了相关的功能,后续会实现预计的构想。

1.nodejs部分

  nodejs部分主要实现了对manifest.json文件的解析和输出功能,对接webpack功能。这里使用了nodemon来代替webpack自身的watch功能。

2.webpack4

  webpack主要应用了babel, html功能,分别对js和html进行处理,其中babel-loader让我们像开发常规web站点一样去模块化开发浏览器插件,html部分则会读取pages下所有的html页面,并进行了压缩。

2.manifest的重新规划

  

{
"name": "bqcrx",
"manifest_version": 2,
"description": "create chrome extend plugin",
"version": "1.0",
"homepage_url": "http://hao8v.net",
"icons": {
"16": "img/app.png",
"48": "img/app.png",
"128": "img/app.png"
},
"scriptsAndCss": [{
"js": ["./src/index.js"],
"position": "document_start"
}],
"background": {
"scripts": ["./src/background.js"]
},
"opentab": true,
"browser_action":
{
"icon": "img/icon.png",
"title": "电影巷Chrome插件测试",
"popup": "index.html"
}
}

  1.权限

    Chrome插件里需要声明应用的权限,这里做了一个偷懒的处理,如果你声明了确切的权限,你就能获取到相关的权限,如果没有声明,那么为了防止权限不够,会给你所有的权限。

    

"permissions": [
"contextMenus", // 右键菜单
"tabs", // 标签
"notifications", // 通知
"webRequest", // web请求
"webRequestBlocking",
"storage", // 插件本地存储
"http://*/*", // 可以通过executeScript或者insertCSS访问的网站
"https://*/*" // 可以通过executeScript或者insertCSS访问的网站
"activeTab"
],

  1.1 右键菜单

    这里封装了一个简单的lib,通过export 导出了contextMenu方法,来实现右键菜单的功能。

    

 import { contextMenu } from './lib/chrome'

 contextMenu({
title: '请使用666搜索',
showSelect: true,
onclick: function() {
console.log('heiheihei')
}
})

  1.2 tabs标签

    标签权限在搜索,打开标签页,标签页之间通信等方面是离不开的。

    这里只测试了一个简单的opentab, 其中opentab可以是true 或者 false,或者不填,为true则默认在打开新tab页时打开本人个人常看电影的网站, 为false或者不写则不会替换.

  

"opentab": true,

其他权限功能还没应用。

   2.css和js

  CSS和JS有两个部分,一种是content-script,一种是background,先说前一种。

  这里换成了scriptsAndCss字段代替,其中css和js依然是数组,css和js的路径为相对路径,生成的路径中会转化成对应的路径。

  position则对应原来的run_at,指的是注入script的时机,值分别为document_start、document_end、document_idle(空闲),默认为document_idle

"scriptsAndCss": [{
"js": ["./src/index.js"],
"position": "document_start"
}],

  再说background, background的生命周期,是伴随整个插件存在的,里面可以访问到相应的Chrome权限能力。

  这里需要注意的是,content-script和页面的变量是不共享,也就是说,假如你在页面上引入了jQuery,那么你在content-script中的是无法使用jQuery的。

可是我就是想用怎么办呢?有办法。

  这里提供了一个inject:

  

injects: ['./src/inject.js', './src/inject1.js']

  那么我们就可以在inject引入的js中,愉快的去使用页面中的变量了。

  3.其他

  

     "name": "bqcrx",
"description": "create chrome extend plugin",
"version": "1.0",
"homepage_url": "http://hao8v.net",
"icons": {
"16": "img/app.png",
"48": "img/app.png",
"128": "img/app.png"
},

这样,就可以通过npm命令去启动开发啦~~~

GitHub项目地址:https://github.com/Greensoon/bq-createchr

其实一开始是想写成一个vue或者react的一个库,通过组件的形式去实现更加简单方面的开发,希望有时间去推进和完成后续的功能。

nodejs + webpack4 + babel6 结合写Chrome浏览器插件记录的更多相关文章

  1. nodejs + webpack4 + babel6 结合写Chrome浏览器插件记录(2)

    上来先来看下当前实现的效果吧. 前言 首先感谢第一篇留言鼓励的同学,最近各种繁杂的事,时间占用较多,但是也总抽空继续改造这个项目,期间遇到了各种Vue渲染的问题,常规的字符串渲染会在Chrome插件中 ...

  2. chrome浏览器插件启动本地应用程序

    chrome浏览器插件启动本地应用程序 2014-04-20 00:04:30|  分类: 浏览器插件|举报|字号 订阅     下载LOFTER我的照片书  |     chrome的插件开发这里就 ...

  3. Rest Client(Rest接口调试工具,有保存功配置功能) chrome浏览器插件

    Rest Client(Rest接口调试工具,有保存功配置功能) chrome浏览器插件 下载地址 插件的操作很简单,下面是一些简单的实例. 1.安装 在谷歌应用商城搜索postman,如下图1-1所 ...

  4. chrome浏览器插件window resizer调试webapp页面大小

    chrome浏览器插件window resizer可以调整当前浏览器分辨率大小 可以自定义大小,以适合于andorid和iphone设备

  5. 用Javascript编写Chrome浏览器插件

    原文:http://homepage.yesky.com/62/11206062.shtml 用Javascript编写Chrome浏览器插件 2010-04-12 07:30 来源:天极网软件频道 ...

  6. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  7. chrome浏览器插件开发经验(一)

    最近在进行chrome浏览器插件的开发,一些小的经验总结随笔. 1.首先,推荐360的chrome插件开发文档:http://open.chrome.360.cn/extension_dev/over ...

  8. 还在为百度网盘下载速度太慢烦恼?chrome浏览器插件帮你解决!

    百度网盘已然成为分享型网盘中一家独大的“大佬”了.时代就是这样不管你喜不喜欢,上网总会遇到些百度网盘共享的文件需要下载.然而,百度网盘对免费用户的限速已经到了“感人”的地步了,常常十多KB/秒的速度真 ...

  9. 强烈推荐 10 款珍藏的 Chrome 浏览器插件

    Firebug 的年代,我是火狐(Mozilla Firefox)浏览器的死忠:但后来不知道为什么,该插件停止了开发,导致我不得不寻求一个新的网页开发工具.那段时间,不少人开始推荐 Chrome 浏览 ...

随机推荐

  1. 数据结构C语言版干货------->线性表之顺序表

    一:头文件定义 /*************************************************************************** *项目 数据结构 *概要 逻辑 ...

  2. Java钉钉开发_00_资源帖

    1.源码 本系列教程的源码已上传至GitHub:  https://github.com/shirayner/DingTalk_Demo 2.官方 官方源码:https://github.com/op ...

  3. web前端绘制0.5像素的几种方法

    最近完成了公司安排的移动web触屏开发,期间涉及到在移动设备上显示线条,最开始采用PC常用的css board属性来显示1个像素的线条,但是发现在移动设备上并不美观,参考淘宝.京东的触屏发现它们均是采 ...

  4. stl_deque.h

    stl_deque.h // Filename: stl_deque.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http:/ ...

  5. Convolutional Neural Networks for Visual Recognition 1

    Introduction 这是斯坦福计算机视觉大牛李菲菲最新开设的一门关于deep learning在计算机视觉领域的相关应用的课程.这个课程重点介绍了deep learning里的一种比较流行的模型 ...

  6. 不要使用Android Studio的Git Commit了---->记一次debug

    今天下午写了一些代码,吃晚饭时分用Android Studio commit了一下,不知道有没有选择Commit and push,结果刚才代码出bug我想回滚到上个版本的时候,发现Android S ...

  7. 8个Javascript小技巧,让你写的代码有腔调

    如果你想确保你的JavaScript在大多数浏览器和移动设备中都可以工作,那么我从大漠等大神指导,原来可以使用f2etest,也可以使用Endtest,browserstack等 1. 使用 + 字符 ...

  8. C++ STL, next_permutation用法。

    next_permutation 将按字母表顺序生成给定序列的下一个较大的序列,直到整个序列为 #include"iostream" #include"algorithm ...

  9. 【Tensorflow】Ubuntu 安装 Tensorflow gpu

    安装环境:Ubuntu 16.04lts 64位,gcc5.4 1.安装Cuda 1. 下载cuda toolkit. 下载cuda8.0 地址:https://developer.nvidia.co ...

  10. MyEclipse 手动安装Velocity 编辑器

    最近项目有使用Velocity 模板引擎,从而会用到*.VM页面!Myeclipse打开VM页面字体一片漆黑,哪有JSP那样看起来舒服(个人感觉)!为了解决这一问题就要安装Velocity编辑器,安装 ...