Skip to content

Commit

Permalink
Remove Bower dependency
Browse files Browse the repository at this point in the history
- Switch ember dependency (bower) to ember-source (npm)
- Remove all Bower related files
- Update CI config, git ignore file and docs

TODO:
- Manually build Ember once it's been upgraded to a newer version.
  Ember-data is already being built manually as an ember addon.
  • Loading branch information
bastimeyer committed Feb 1, 2018
1 parent 5d6afd2 commit 4444d5a
Show file tree
Hide file tree
Showing 14 changed files with 80 additions and 84 deletions.
4 changes: 0 additions & 4 deletions .bowerrc

This file was deleted.

1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ nbproject

# dependencies
/node_modules/
/bower_components/

# builds
/build/cache/
Expand Down
3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ cache:
apt: true
directories:
- node_modules
- bower_components
- build/cache
yarn: true

Expand All @@ -37,7 +36,7 @@ before_install:
yarn --version
install:
- yarn global add --no-progress --non-interactive bower grunt-cli
- yarn global add --no-progress --non-interactive grunt-cli
- yarn install --pure-lockfile --no-progress --non-interactive

script:
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ git clone https://github.com/streamlink/streamlink-twitch-gui.git
cd streamlink-twitch-gui

# install dependencies via yarn (preferred way)
yarn global add bower grunt-cli # may require administrator privileges
yarn global add grunt-cli # may require administrator privileges
yarn install
# or use npm instead (discouraged)
npm install --global bower grunt-cli # may require administrator privileges
npm install --global grunt-cli # may require administrator privileges
npm install
```

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Building the application on your own is simple. Just make sure that the latest s
Then run the following lines from the path of your cloned repository to install all dependencies and to start the build process. You will then find the built executable inside the `build/releases` folder. See [here][Contributing] for more detailed instructions.

```bash
yarn global add bower grunt-cli
yarn global add grunt-cli
yarn install
grunt release
```
Expand Down
6 changes: 0 additions & 6 deletions bower.json

This file was deleted.

58 changes: 17 additions & 41 deletions build/tasks/configs/webpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,13 @@ const pTestFixtures = r( pTest, "fixtures" );
const pStyles = r( pRoot, "styles" );
const pImages = r( pRoot, "img" );
const pTemplates = r( pRoot, "templates" );
const pModulesBower = r( ".", "bower_components" );
const pModulesNpm = r( ".", "node_modules" );
const pDependencies = r( ".", "node_modules" );
const pCacheBabel = r( tmpdir(), "babel-cache" );


const resolveModuleDirectories = [
"web_modules",
"node_modules",
"bower_components"
"node_modules"
];
const resolveLoaderModuleDirectories = [
"web_loaders",
Expand All @@ -49,7 +47,7 @@ const commonLoaders = [
// Ember-Data
{
test: /\.js$/,
include: r( pModulesNpm, "ember-data", "addon" ),
include: r( pDependencies, "ember-data", "addon" ),
loader: "babel-loader",
options: {
presets: [],
Expand All @@ -70,10 +68,7 @@ const commonLoaders = [
enforce: "pre",
test: /\.js$/,
loader: "eslint-loader",
exclude: [
pModulesNpm,
pModulesBower
],
exclude: pDependencies,
options: {
failOnError: true
}
Expand All @@ -91,8 +86,7 @@ const commonLoaders = [
loader: "metadata-loader",
options: {
dependencyProperties: [ "dependencies", "devDependencies" ],
packageNpm: r( pProjectRoot, "package.json" ),
packageBower: r( pProjectRoot, "bower.json" ),
packageJson: r( pProjectRoot, "package.json" ),
donationConfigFile: r( pConfig, "main.json" )
}
},
Expand Down Expand Up @@ -176,7 +170,7 @@ const commonLoaders = [
const loadersEmberProductionBuild = [
{
test: /\.js$/,
include: r( pModulesNpm, "ember-data", "addon" ),
include: r( pDependencies, "ember-data", "addon" ),
loader: "babel-loader",
options: {
presets: [],
Expand Down Expand Up @@ -207,10 +201,7 @@ const loadersEmberProductionBuild = [
// the inject-loader used by some tests requires es2015 modules to be transpiled
const loaderBabelTest = {
test: /\.js$/,
exclude: [
pModulesNpm,
pModulesBower
],
exclude: pDependencies,
loader: "babel-loader",
options: {
presets: [],
Expand Down Expand Up @@ -262,7 +253,6 @@ module.exports = {
"styles" : pStyles,
"img" : pImages,
"templates" : pTemplates,
"bower" : pModulesBower,
"fixtures" : pTestFixtures,

// app folders
Expand All @@ -284,9 +274,9 @@ module.exports = {
"ember" : r( pRoot, "web_modules", "ember" ),
"ember-data$" : r( pRoot, "web_modules", "ember-data" ),
"ember-data/version$": r( pRoot, "web_modules", "ember-data", "version" ),
"ember-data/app": r( pModulesNpm, "ember-data", "app" ),
"ember-data" : r( pModulesNpm, "ember-data", "addon" ),
"ember-inflector": r( pModulesNpm, "ember-inflector", "addon" ),
"ember-data/app": r( pDependencies, "ember-data", "app" ),
"ember-data" : r( pDependencies, "ember-data", "addon" ),
"ember-inflector": r( pDependencies, "ember-inflector", "addon" ),
"qunit$" : r( pTest, "web_modules", "qunit" ),
"ember-qunit$": "ember-qunit",
"ember-qunit" : "ember-qunit/lib/ember-qunit",
Expand All @@ -304,33 +294,22 @@ module.exports = {
},

module: {
noParse: /bower_components\/.+\/ember(-data)?(\.(debug|prod))?\.js$/
noParse: /\/ember-source\/dist\/ember\.(debug|prod)\.js$/
},

plugins: [
// don't split the main module into multiple chunks
new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 }),

// Split "main" entry point into webpack manifest, bower/npm bundles and app code.
// Split "main" entry point into webpack manifest, dependency bundles and app code.
// Select all modules to be bundled and narrow the selection down in each new chunk.
// This looks weird and can probably be improved, but it works...
new webpack.optimize.CommonsChunkPlugin({
name: "vendor.bower",
minChunks({ resource }) {
return resource
&& (
resource.startsWith( pModulesBower )
|| resource.startsWith( pModulesNpm )
|| resource.startsWith( pTemplates )
);
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: "vendor.npm",
name: "dependencies",
minChunks({ resource }) {
return resource
&& (
resource.startsWith( pModulesNpm )
resource.startsWith( pDependencies )
|| resource.startsWith( pTemplates )
);
}
Expand All @@ -352,10 +331,7 @@ module.exports = {
lessExtractTextPlugin,

// ignore l10n modules of momentjs
new webpack.IgnorePlugin( /^\.\/locale$/, /moment$/ ),

// ignore abstract-socket (and its binding dependency)
new webpack.IgnorePlugin( /abstract-socket/, /dbus-native/ )
new webpack.IgnorePlugin( /^\.\/locale$/, /moment$/ )
]
},

Expand Down Expand Up @@ -467,8 +443,8 @@ module.exports = {

// use non-debug versions of ember and ember-data in production builds
new webpack.NormalModuleReplacementPlugin(
/\/ember\/ember\.debug\.js$/,
r( pModulesBower, "ember", "ember.prod.js" )
/\/ember-source\/dist\/ember\.debug\.js$/,
r( pDependencies, "ember-source", "dist", "ember.prod.js" )
),

// minifiy and optimize production code
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
},
"dependencies": {
"bootstrap": "3.3.1",
"ember-source": "2.11.3",
"ember-data": "2.11.3",
"ember-data-model-fragments": "2.11.5",
"ember-inflector": "1.12.1",
Expand Down Expand Up @@ -64,7 +65,6 @@
"webpack": "3.3.0"
},
"scripts": {
"postinstall": "bower install",
"build": "grunt release",
"test": "grunt test"
}
Expand Down
1 change: 0 additions & 1 deletion src/test/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import QUnit, {
} from "qunit";
import "qunit/assertion-helpers";
import "ember-test";
import "bower/ember/ember-template-compiler";


// don't start automatically
Expand Down
1 change: 1 addition & 0 deletions src/test/web_modules/ember-test.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Ember from "ember";
import "ember-source/dist/ember-template-compiler";
import "ember-data";
import "ember-qunit";
import "ember-test-helpers";
Expand Down
2 changes: 1 addition & 1 deletion src/web_loaders/hbs-loader.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const TemplateCompiler = require( "../../bower_components/ember/ember-template-compiler" );
const TemplateCompiler = require( "ember-source/dist/ember-template-compiler" );
const { precompile } = TemplateCompiler;


Expand Down
26 changes: 8 additions & 18 deletions src/web_loaders/metadata-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,16 @@ module.exports = function() {

const {
dependencyProperties,
packageNpm,
packageBower,
packageJson,
donationConfigFile
} = this.query;

this.addDependency( packageNpm );
this.addDependency( packageBower );
this.addDependency( packageJson );
this.addDependency( donationConfigFile );
this.cacheable( false );

const readFile = denodify( FS.readFile );
const readPackageNpm = readFile( packageNpm ).then( JSON.parse );
const readPackageBower = readFile( packageBower ).then( JSON.parse );
const readPackageJson = readFile( packageJson ).then( JSON.parse );


function promiseExec( exec, params ) {
Expand Down Expand Up @@ -60,7 +57,7 @@ module.exports = function() {

function promisePackageData() {
return Promise.all([
readPackageNpm,
readPackageJson,
promiseExec( "git", [ "describe", "--tags" ] )
])
.then( ([ json, version ]) => ({
Expand All @@ -79,17 +76,10 @@ module.exports = function() {
return obj;
}

return Promise.all([
readPackageBower,
readPackageNpm
])
.then( files => files
// find dependencies
.map( json => dependencyProperties
.map( property => json[ property ] || {} )
.reduce( merge, {} )
)
// merge all dependencies
return readPackageJson
// merge dependencies
.then( json => dependencyProperties
.map( property => json[ property ] || {} )
.reduce( merge, {} )
);
}
Expand Down
2 changes: 1 addition & 1 deletion src/web_modules/ember.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import "jquery";
import "bower/ember/ember.debug";
import "ember-source/dist/ember.debug";


const Ember = window.Ember;
Expand Down
Loading

0 comments on commit 4444d5a

Please sign in to comment.