Making your CSS modular is a difficult thing to do, but using Webpack makes this so much easier. By adding a single line to your Webpack config, you can require you CSS, Stylus, Less, etc. files right from your directives and keep everything together.
Install:
npm install -D style-loader css-loader stylus-loader
webpack.config.js:
'style!css' means compile css first then style. The webpack read from right to left.
So 'style!css!stylus': compile stylus, then css, final style.
module.exports = {
entry: {
app: ['./app/index.js']
},
output: {
path: './build',
filename: 'bundle.js'
},
module: {
loaders: [
{test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/},
{test: /\.html$/, loader: 'html-loader', exclude: /node_modules/},
{test: /\.css$/, loader: 'style!css', exclude: /node_modules/},
{test: /\.css$/, loader: 'style!css!stylus', exclude: /node_modules/}
]
}
};
export default (ngModule) => {
ngModule.directive('hello', () => {
require('./hello.css');
return {
restrict: 'E',
scope: {},
template: require('./hello.html'),
controllerAs: 'vm',
controller: function() {
var vm = this;
vm.greeting = "Hello";
}
}
}) }