diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index 959e169..0000000 --- a/.bowerrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "directory": "bower_components", - "analytics": false -} diff --git a/.travis.yml b/.travis.yml index 8197d31..d35e703 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,19 +1,22 @@ --- language: node_js node_js: - - "0.12" + - "4" sudo: false cache: directories: - - node_modules + - $HOME/.npm env: - - EMBER_TRY_SCENARIO=default + # we recommend testing LTS's and latest stable release (bonus points to beta/canary) + - EMBER_TRY_SCENARIO=ember-lts-2.4 + - EMBER_TRY_SCENARIO=ember-lts-2.8 - EMBER_TRY_SCENARIO=ember-release - EMBER_TRY_SCENARIO=ember-beta - EMBER_TRY_SCENARIO=ember-canary + - EMBER_TRY_SCENARIO=ember-default matrix: fast_finish: true @@ -21,14 +24,14 @@ matrix: - env: EMBER_TRY_SCENARIO=ember-canary before_install: - - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH - - "npm config set spin false" - - "npm install -g npm@^2" + - npm config set spin false + - npm install -g phantomjs-prebuilt + - phantomjs --version install: - - npm install -g bower - npm install - - bower install script: - - ember try $EMBER_TRY_SCENARIO test + # Usually, it's ok to finish the test scenario without reverting + # to the addon's original dependency state, skipping "cleanup". + - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO test --skip-cleanup diff --git a/README.md b/README.md index 4750e92..d37e551 100644 --- a/README.md +++ b/README.md @@ -2,36 +2,20 @@ Include bourbon in an ember-cli app. -When the addon is installed, it will add bourbon as a bower dependency. - ## Dependencies Your project should already be set up to handle sass/scss builds. If you're not, do so by running: - npm install broccoli-sass --save-dev + ember install ember-cli-sass ## Usage In your ember-cli (>= 0.1.1) project, run: - npm install ember-cli-bourbon --save-dev - ember g ember-cli-bourbon + ember install ember-cli-bourbon The generator will create an `app.scss` with the sole contents being: @import "bourbon"; -If you already have content in your `app.scss`, you can just choose "n" and add that -line to the top of `app.scss` yourself. - -## Developing this Addon - -* `ember server` -* Visit the dummy app at http://localhost:4200. - -## Running Tests - -* `ember test` -* `ember test --server` - -For more information on using ember-cli, visit [http://www.ember-cli.com/](http://www.ember-cli.com/). +If you already have content in your `app.scss`, you can add that line to the top of `app.scss` yourself. diff --git a/bower.json b/bower.json index 879980d..aaafaf9 100644 --- a/bower.json +++ b/bower.json @@ -1,17 +1,5 @@ { "name": "ember-cli-bourbon", "dependencies": { - "bourbon": "~4.2.6", - "ember": "1.13.11", - "ember-cli-shims": "0.0.6", - "ember-cli-test-loader": "0.2.1", - "ember-data": "1.13.15", - "ember-load-initializers": "0.1.7", - "ember-qunit": "0.4.16", - "ember-qunit-notifications": "0.1.0", - "ember-resolver": "~0.1.20", - "jquery": "^1.11.3", - "loader.js": "ember-cli/loader.js#3.4.0", - "qunit": "~1.20.0" } } diff --git a/config/ember-try.js b/config/ember-try.js index 3e88bc6..b1813d0 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -2,34 +2,89 @@ module.exports = { scenarios: [ { - name: 'default', - dependencies: { } + name: 'ember-lts-2.4', + bower: { + dependencies: { + 'ember': 'components/ember#lts-2-4' + }, + resolutions: { + 'ember': 'lts-2-4' + } + }, + npm: { + devDependencies: { + 'ember-source': null + } + } + }, + { + name: 'ember-lts-2.8', + bower: { + dependencies: { + 'ember': 'components/ember#lts-2-8' + }, + resolutions: { + 'ember': 'lts-2-8' + } + }, + npm: { + devDependencies: { + 'ember-source': null + } + } }, { name: 'ember-release', - dependencies: { - 'ember': 'components/ember#release' + bower: { + dependencies: { + 'ember': 'components/ember#release' + }, + resolutions: { + 'ember': 'release' + } }, - resolutions: { - 'ember': 'release' + npm: { + devDependencies: { + 'ember-source': null + } } }, { name: 'ember-beta', - dependencies: { - 'ember': 'components/ember#beta' + bower: { + dependencies: { + 'ember': 'components/ember#beta' + }, + resolutions: { + 'ember': 'beta' + } }, - resolutions: { - 'ember': 'beta' + npm: { + devDependencies: { + 'ember-source': null + } } }, { name: 'ember-canary', - dependencies: { - 'ember': 'components/ember#canary' + bower: { + dependencies: { + 'ember': 'components/ember#canary' + }, + resolutions: { + 'ember': 'canary' + } }, - resolutions: { - 'ember': 'canary' + npm: { + devDependencies: { + 'ember-source': null + } + } + }, + { + name: 'ember-default', + npm: { + devDependencies: {} } } ] diff --git a/index.js b/index.js index c4741da..9a2b5c5 100644 --- a/index.js +++ b/index.js @@ -6,16 +6,28 @@ var Funnel = require('broccoli-funnel'); module.exports = { name: 'ember-cli-bourbon', + blueprintsPath: function() { return path.join(__dirname, 'blueprints'); }, + included: function(app) { + this._super.included.apply(this, arguments); + + // see: https://github.com/ember-cli/ember-cli/issues/3718 + while (typeof app.import !== 'function' && app.app) { + app = app.app; + } + + this.bourbonPath = path.dirname(require.resolve('bourbon')); + return app; + }, + treeForStyles: function() { - var bourbonPath = path.join(this.project.bowerDirectory, 'bourbon', 'app'); - var bourbonTree = new Funnel(this.treeGenerator(bourbonPath), { - srcDir: '/assets/stylesheets', - destDir: '/app/styles' + return new Funnel(this.bourbonPath, { + srcDir: 'app/assets/stylesheets', + destDir: 'app/styles', + annotation: 'Funnel (bourbon)' }); - return bourbonTree; } }; diff --git a/package.json b/package.json index 70d09d3..2817169 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "start": "ember server", "build": "ember build", - "test": "ember try:testall" + "test": "ember test" }, "repository": "https://github.com/yapplabs/ember-cli-bourbon", "engines": { @@ -18,32 +18,26 @@ "author": "Yapp Labs", "license": "MIT", "devDependencies": { - "broccoli-asset-rev": "^2.0.2", - "ember-cli": "^1.13.13", - "ember-cli-app-version": "0.4.0", - "ember-cli-content-security-policy": "0.4.0", - "ember-cli-dependency-checker": "^1.1.0", - "ember-cli-htmlbars": "^1.0.1", - "ember-cli-htmlbars-inline-precompile": "^0.3.1", - "ember-cli-ic-ajax": "0.2.4", - "ember-cli-inject-live-reload": "^1.3.1", - "ember-cli-qunit": "^1.0.4", - "ember-cli-release": "0.2.8", - "ember-cli-sri": "^1.0.1", - "ember-cli-uglify": "^1.0.1", - "ember-data": "1.13.15", - "ember-disable-proxy-controllers": "^1.0.0", - "ember-export-application-global": "^1.0.3", - "ember-cli-sass": "4.0.1", - "ember-disable-prototype-extensions": "^1.0.0", - "ember-try": "0.0.6" + "ember-cli": "^2.11.0", + "ember-cli-htmlbars": "^1.1.1", + "ember-cli-htmlbars-inline-precompile": "^0.3.3", + "ember-cli-qunit": "^3.0.1", + "ember-cli-release": "^0.2.9", + "ember-cli-sass": "5.2.0", + "ember-cli-shims": "^1.0.2", + "ember-cli-test-loader": "^1.1.0", + "ember-load-initializers": "^0.6.0", + "ember-resolver": "^2.0.3", + "ember-source": "^2.11.0", + "loader.js": "^4.0.1" }, "keywords": [ "ember-addon" ], "dependencies": { + "bourbon": "^4.3.3", "broccoli-funnel": "^1.0.1", - "ember-cli-babel": "^5.1.5" + "ember-cli-babel": "^5.1.7" }, "ember-addon": { "configPath": "tests/dummy/config" diff --git a/tests/dummy/.sass-lint.yml b/tests/dummy/.sass-lint.yml new file mode 100644 index 0000000..3917059 --- /dev/null +++ b/tests/dummy/.sass-lint.yml @@ -0,0 +1,37 @@ +rules: + no-ids: 0 + property-sort-order: 0 + mixins-before-declarations: 0 + leading-zero: 0 + empty-line-between-blocks: 0 + space-after-comma: 0 + no-color-literals: 0 + no-color-keywords: 0 + no-mergeable-selectors: 0 + force-element-nesting: 0 + nesting-depth: 0 + force-pseudo-nesting: 0 + single-line-per-selector: 0 + no-vendor-prefixes: 0 + indentation: 0 + variable-name-format: 0 + clean-import-paths: 0 + one-declaration-per-line: 0 + class-name-format: 0 + no-qualifying-elements: 0 + force-attribute-nesting: 0 + no-important: 0 + placeholder-in-extend: 0 + extends-before-declarations: 0 + # TODO: Encapsulate -webkit-overflow-scrolling in mixin to re-enable no-misspelled-properties rule + no-misspelled-properties: 0 + # TODO: Encapsulate crazy cursor stuff in mixin to re-enable no-duplicate-properties rule + no-duplicate-properties: 0 + +# Need to glob file paths with ** in order to match differing relative paths: +# ember-cli-sass-lint app tree -- webfonts/proxima_nova_font.scss +# vs. +# project root for editor plugins -- app/styles/webfonts/proxima_nova_font.scss +files: + ignore: + - '**/base.scss' diff --git a/tests/dummy/app/app.js b/tests/dummy/app/app.js index 8b234d6..831ad61 100644 --- a/tests/dummy/app/app.js +++ b/tests/dummy/app/app.js @@ -1,6 +1,6 @@ import Ember from 'ember'; -import Resolver from 'ember/resolver'; -import loadInitializers from 'ember/load-initializers'; +import Resolver from './resolver'; +import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; let App; diff --git a/tests/dummy/app/resolver.js b/tests/dummy/app/resolver.js new file mode 100644 index 0000000..2fb563d --- /dev/null +++ b/tests/dummy/app/resolver.js @@ -0,0 +1,3 @@ +import Resolver from 'ember-resolver'; + +export default Resolver; diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index 3bba78e..cdc2578 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -2,7 +2,8 @@ import Ember from 'ember'; import config from './config/environment'; const Router = Ember.Router.extend({ - location: config.locationType + location: config.locationType, + rootURL: config.rootURL }); Router.map(function() { diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index c59bcd5..703c472 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -4,12 +4,16 @@ module.exports = function(environment) { var ENV = { modulePrefix: 'dummy', environment: environment, - baseURL: '/', + rootURL: '/', locationType: 'auto', EmberENV: { FEATURES: { // Here you can enable experimental features on an ember canary build // e.g. 'with-controller': true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false } }, @@ -29,7 +33,6 @@ module.exports = function(environment) { if (environment === 'test') { // Testem prefers this... - ENV.baseURL = '/'; ENV.locationType = 'none'; // keep test console output quieter diff --git a/tests/helpers/module-for-acceptance.js b/tests/helpers/module-for-acceptance.js index ed23003..76996fd 100644 --- a/tests/helpers/module-for-acceptance.js +++ b/tests/helpers/module-for-acceptance.js @@ -1,23 +1,23 @@ import { module } from 'qunit'; +import Ember from 'ember'; import startApp from '../helpers/start-app'; import destroyApp from '../helpers/destroy-app'; +const { RSVP: { Promise } } = Ember; + export default function(name, options = {}) { module(name, { beforeEach() { this.application = startApp(); if (options.beforeEach) { - options.beforeEach.apply(this, arguments); + return options.beforeEach.apply(this, arguments); } }, afterEach() { - destroyApp(this.application); - - if (options.afterEach) { - options.afterEach.apply(this, arguments); - } + let afterEach = options.afterEach && options.afterEach.apply(this, arguments); + return Promise.resolve(afterEach).then(() => destroyApp(this.application)); } }); } diff --git a/tests/helpers/resolver.js b/tests/helpers/resolver.js index ebfb4e4..b208d38 100644 --- a/tests/helpers/resolver.js +++ b/tests/helpers/resolver.js @@ -1,4 +1,4 @@ -import Resolver from 'ember/resolver'; +import Resolver from '../../resolver'; import config from '../../config/environment'; const resolver = Resolver.create(); diff --git a/tests/index.html b/tests/index.html index 5e88e5e..5209b85 100644 --- a/tests/index.html +++ b/tests/index.html @@ -7,28 +7,27 @@ - {{content-for 'head'}} - {{content-for 'test-head'}} + {{content-for "head"}} + {{content-for "test-head"}} - - - + + + - {{content-for 'head-footer'}} - {{content-for 'test-head-footer'}} + {{content-for "head-footer"}} + {{content-for "test-head-footer"}} - {{content-for 'body'}} - {{content-for 'test-body'}} + {{content-for "body"}} + {{content-for "test-body"}} - - - - - - + + + + + - {{content-for 'body-footer'}} - {{content-for 'test-body-footer'}} + {{content-for "body-footer"}} + {{content-for "test-body-footer"}}