Giter Club home page Giter Club logo

create-chrome-extension's Introduction

Create Chrome Extension

Bootstrap project for developing any kind Chrome extensions with all javascript features like NPM packages, Webpack, Babel, React and almost everything you want.

WARNING

This is proof new version inspired by Create React App. It is not fully working, but you can follow it and help to make it better. It is still in state of transition from Webpack Chrome Extension and not everything is in README or work on 100%.

Turn this

manifest.json

{
  "content_scripts": [{
    "js": ["jquery.min.js", "jquery-spellchecker.min.js", "jquery-megamask.min.js", "jquery-scrolltie.min.js", "my-plugins.js", "app.js"],
    "css": ["app.css"]
  }]
}

Into this

manifest.json

{
  "content_scripts": [{
    "js": ["app.js"]
  }]
}

Run npm install jquery jquery-spellchecker jquery-megamask jquery-scrolltie --save

app.js

import 'jquery'
import 'jquery-spellchecker'
import 'jquery-megamask'
import 'jquery-scrolltie'
import './my-plugins'

import "./app.css"

// Here start my application
$('input').spellchecker()

Environment support

Extension features support

Installation

In your project npm install -D chrome-extension-scripts

Run development environment

You should do this before editing any code to see how it works.

  1. run chrome-extension run [path to manifest.json] -o [path to build directory]
  2. in Chrome open chrome://extensions/
  3. check Developer mode
  4. click on Load unpacked extension
  5. add your build directory
  6. changing of manifest.json wont trigger hot reloading and you have to rerun step 1.

Build production extension

  1. run chrome-extension build [path to manifest.json] -o [path to release directory]
  2. It will compile scripts, styles and other assets into your release directory
  3. It will make chrome extension into your release directory with certificate

chrome-extension command api

Run chrome-extension run [manifest_path] -o [build_path] -e [environment]

Build chrome-extension build [manifest_path] -o [build_path] -e [environment]

Example

  • in this repo see example/manifest.json for basic usage of background script, content script, action popup and chrome url overrides.
  • all scripts and/or html pages from manifest.json are piped through preprocessor and prepared for using all features.
  • in your scripts you can use npm packages, babel, react (jsx), styles (with preprocessors) and any modern javascript feature you know.
  • when your extension does exactly what you want, you can run make production ready .crx build.

How to run it

  1. clone this repository git clone [email protected]:schovi/webpack-chrome-extension.git
  2. run npm install
  3. run npm run example
  4. to build extension run npm run example:build

Troubleshoting

  1. everything looks fine, but scripts from webpack arent loading.

Done

  • detect Chrome path for building extension

Future

  • allow to pass existing .pem when building extension
  • experiment with hot middleware (hints in NOTE.md)
  • allow to have "static" files which will be merged into build
  • allow to reload extension when popup html file changed
  • solve Hot reload fix better than overriding file in /node_modules. It is really ugly and hacky
  • test assets without base64
  • add support for extension updating

create-chrome-extension's People

Contributors

sangaline avatar schovi avatar ecwyne avatar ladas-larry avatar ucodia avatar dev-msp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.