forked from AlexITC/scala-js-chrome
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sbt
127 lines (117 loc) · 3.91 KB
/
build.sbt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import chrome._
import chrome.permissions.Permission
import chrome.permissions.Permission.{API, Host}
import com.alexitc.{Chrome, ChromeSbtPlugin}
lazy val examples = project.in(file(".")).aggregate(exampleApp, extension)
lazy val scalaJsChrome = ProjectRef(file("../."), "bindings")
lazy val exampleApp = project.in(file("app"))
.dependsOn(scalaJsChrome)
.enablePlugins(ChromeSbtPlugin)
.settings(
name := "Example App",
version := "0.1.0",
scalaVersion := "2.12.7",
scalacOptions ++= Seq(
"-language:implicitConversions",
"-language:existentials",
"-Xlint",
"-deprecation",
"-Xfatal-warnings",
"-feature"
),
scalaJSUseMainModuleInitializer := true,
scalaJSUseMainModuleInitializer in Test := false,
scalaJSLinkerConfig := scalaJSLinkerConfig.value.withRelativizeSourceMapBase(
Some((Compile / fastOptJS / artifactPath).value.toURI)
),
skip in packageJSDependencies := false,
// you can customize and have a static output name for lib and dependencies
// instead of having the default files names like app-fastopt.js, ...
artifactPath in (Compile, fastOptJS) := {
(crossTarget in fastOptJS).value / "main.js"
},
artifactPath in (Compile, fullOptJS) := {
(crossTarget in fullOptJS).value / "main.js"
},
artifactPath in (Compile, packageJSDependencies) := {
(crossTarget in packageJSDependencies).value / "dependencies.js"
},
artifactPath in (Compile, packageMinifiedJSDependencies) := {
(crossTarget in packageMinifiedJSDependencies).value / "dependencies.js"
},
chromeManifest := new AppManifest {
val name = Keys.name.value
val version = Keys.version.value
val app = App(
background = Background(
scripts = List("main.js", "dependencies.js")
)
)
override val defaultLocale = Some("en")
override val icons = Chrome.icons(
"icons",
"app.png",
Set(256)
)
override val permissions = Set[Permission](
API.System.CPU,
API.System.Display,
API.System.Memory,
API.System.Network,
API.Storage
)
}
)
lazy val extension = project.in(file("extension"))
.dependsOn(scalaJsChrome)
.enablePlugins(ChromeSbtPlugin)
.settings(
name := "Example Extension",
version := "0.1.0",
scalaVersion := "2.12.7",
scalacOptions ++= Seq(
"-language:implicitConversions",
"-language:existentials",
"-Xlint",
"-deprecation",
"-Xfatal-warnings",
"-feature"
),
scalaJSUseMainModuleInitializer := true,
scalaJSUseMainModuleInitializer in Test := false,
scalaJSLinkerConfig := scalaJSLinkerConfig.value.withRelativizeSourceMapBase(
Some((Compile / fastOptJS / artifactPath).value.toURI)
),
skip in packageJSDependencies := false,
// you can customize and have a static output name for lib and dependencies
// instead of having the default files names like extension-fastopt.js, ...
artifactPath in (Compile, fastOptJS) := {
(crossTarget in fastOptJS).value / "main.js"
},
artifactPath in (Compile, fullOptJS) := {
(crossTarget in fullOptJS).value / "main.js"
},
artifactPath in (Compile, packageJSDependencies) := {
(crossTarget in packageJSDependencies).value / "dependencies.js"
},
artifactPath in (Compile, packageMinifiedJSDependencies) := {
(crossTarget in packageMinifiedJSDependencies).value / "dependencies.js"
},
chromeManifest := new ExtensionManifest {
val background = Background(
scripts = List("main.js", "dependencies.js")
)
val name = Keys.name.value
val version = Keys.version.value
override val icons = Chrome.icons(
"icons",
"app.png",
Set(256)
)
override val permissions = Set[Permission](
API.Tabs,
API.Management,
API.Storage
)
}
)