From 39ac9e7ecccb558051de0050d9140336bc0d8f88 Mon Sep 17 00:00:00 2001 From: Date: Sat, 1 Jul 2017 04:52:49 -0700 Subject: [PATCH] Implement autoload system for styles/scripts --- package-lock.json | 14 ++++++++++++++ package.json | 1 + resources/assets/build/webpack.config.js | 9 +++++++-- resources/assets/scripts/autoload/_bootstrap.js | 1 + resources/assets/scripts/main.js | 4 +++- resources/assets/styles/autoload/_bootstrap.scss | 1 + resources/assets/styles/main.scss | 5 ++++- yarn.lock | 8 +++++++- 8 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 resources/assets/scripts/autoload/_bootstrap.js create mode 100644 resources/assets/styles/autoload/_bootstrap.scss diff --git a/package-lock.json b/package-lock.json index 830bfa7..31ca5cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4066,6 +4066,20 @@ "integrity": "sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI=", "dev": true }, + "import-glob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/import-glob/-/import-glob-1.5.0.tgz", + "integrity": "sha1-W43El8exriQG2kHKaHuzs0Inplk=", + "dev": true, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", diff --git a/package.json b/package.json index 18000c1..4d3476e 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "file-loader": "~1.0.0-beta.1", "imagemin-mozjpeg": "~6.0", "imagemin-webpack-plugin": "~1.5.0-beta.0", + "import-glob": "~1.5", "node-sass": "~4.5", "optimize-css-assets-webpack-plugin": "~2.0", "postcss-loader": "~2.0", diff --git a/resources/assets/build/webpack.config.js b/resources/assets/build/webpack.config.js index 1715aeb..cf8a81b 100644 --- a/resources/assets/build/webpack.config.js +++ b/resources/assets/build/webpack.config.js @@ -11,7 +11,6 @@ const CopyGlobsPlugin = require('copy-globs-webpack-plugin'); const config = require('./config'); const assetsFilenames = (config.enabled.cacheBusting) ? config.cacheBusting : '[name]'; -const sourceMapQueryStr = (config.enabled.sourceMaps) ? '+sourceMap' : '-sourceMap'; let webpackConfig = { context: config.paths.assets, @@ -26,10 +25,16 @@ let webpackConfig = { rules: [ { enforce: 'pre', - test: /\.js?$/, + test: /\.js$/, include: config.paths.assets, use: 'eslint', }, + { + enforce: 'pre', + test: /\.(js|s?[ca]ss)$/, + include: config.paths.assets, + loader: 'import-glob', + }, { test: /\.js$/, exclude: [/(node_modules|bower_components)(?![/|\\](bootstrap|foundation-sites))/], diff --git a/resources/assets/scripts/autoload/_bootstrap.js b/resources/assets/scripts/autoload/_bootstrap.js new file mode 100644 index 0000000..abd76b5 --- /dev/null +++ b/resources/assets/scripts/autoload/_bootstrap.js @@ -0,0 +1 @@ +import 'bootstrap'; diff --git a/resources/assets/scripts/main.js b/resources/assets/scripts/main.js index e86ebf8..bcbfcf8 100644 --- a/resources/assets/scripts/main.js +++ b/resources/assets/scripts/main.js @@ -1,6 +1,8 @@ // import external dependencies import 'jquery'; -import 'bootstrap'; + +// Import everything from autoload +import "./autoload/**/*" // import local dependencies import Router from './util/Router'; diff --git a/resources/assets/styles/autoload/_bootstrap.scss b/resources/assets/styles/autoload/_bootstrap.scss new file mode 100644 index 0000000..19b0ca9 --- /dev/null +++ b/resources/assets/styles/autoload/_bootstrap.scss @@ -0,0 +1 @@ +@import "~bootstrap/scss/bootstrap"; diff --git a/resources/assets/styles/main.scss b/resources/assets/styles/main.scss index 198c469..2a01fd7 100644 --- a/resources/assets/styles/main.scss +++ b/resources/assets/styles/main.scss @@ -1,12 +1,15 @@ @import "common/variables"; +/** Import everything from autoload */ +@import "./autoload/**/*"; + /** * Import npm dependencies * * Prefix your imports with `~` to grab from node_modules/ * @see https://github.com/webpack-contrib/sass-loader#imports */ -@import "~bootstrap/scss/bootstrap"; +// @import "~some-node-module"; /** Import theme styles */ @import "common/global"; diff --git a/yarn.lock b/yarn.lock index 9e93615..b37796b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2409,7 +2409,7 @@ glob-stream@^5.3.2: to-absolute-glob "^0.1.1" unique-stream "^2.0.2" -glob@^5.0.3: +glob@^5.0.13, glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: @@ -2816,6 +2816,12 @@ immutable@3.8.1, immutable@^3.7.6: version "3.8.1" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" +import-glob@~1.5: + version "1.5.0" + resolved "https://registry.yarnpkg.com/import-glob/-/import-glob-1.5.0.tgz#5b8dc497c7b1ae2406da41ca687bb3b34227a659" + dependencies: + glob "^5.0.13" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"