从Bower移至npm并从node_modules包含CSS-AngularJS Webpack Sass

最后发布: 2017-12-21 11:52:48


问题

我有一个在Bower和Npm模块混合运行的AngularJS应用程序。

比如我曾用angular-material-data-table通过bower install angular-material-data-table --save这个在线添加到我index.html

<link rel="stylesheet" href="bower_components/angular-material-data-table/dist/md-data-table.min.css" />

这是我的应用程序的层次结构。

- app
- - scripts
- - styles

内部样式中,我当前使用.scss扩展名,并且具有一个main.scss文件,该文件@import我的文件然后再处理到其中。

我现在也在使用Webpack

const path = require('path');
const webpack = require('webpack');

module.exports = {
  entry: './app/scripts/app.module.js',
  output: {
    path: path.resolve(__dirname, 'app/build'),
    filename: '[name].bundle.js',
  },
  resolve: {
    alias: {
      'jquery-ui': 'jquery-ui-dist/jquery-ui.js'
    }
  },
  module: {
    loaders: [
      {
        test: /.json$/,
        loaders: [
          'json-loader',
        ],
      },
      {
        test: /.js$/,
        exclude: /node_modules/,
        loader: 'eslint-loader',
        enforce: 'pre',
      },
      {
        test: /\.(eot|woff|woff2|svg|ttf|png)([\?]?.*)$/,
        loader: 'file-loader',
      },
      {
        test: /\.(css|scss)$/,
        loaders: [
          'style-loader',
          'css-loader?minimize=true',
          'postcss-loader',
          'sass-loader',
        ],
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loaders: [
          'ng-annotate-loader',
          'babel-loader',
        ],
      },
    ],
  },
  plugins: [
    new webpack.ProvidePlugin({
      "moment": "moment",
      "$": "jquery",
      "jQuery": "jquery",
      "window.jQuery": "jquery"
    })
  ],
  externals: ['window'],
  devtool: '#inline-source-map',
};

所以我尝试了

添加到app.module.js

import '../../node_modules/angular-material-data-table/dist/md-data-table.min.css';

还尝试添加

@import '/node_modules/angular-material-data-table/dist/md-data-table.css'; main.scss内部

两者都不起作用。

css angularjs webpack