如何完全捆绑资产文件夹-Webpack

时间:2018-10-04 08:44:55

标签: javascript angularjs webpack

我正在使用MEAN堆栈构建Web应用程序。

我正在使用Webpack捆绑文件。

在我的项目中,我有两个名为1.public / assets的文件夹(在此资产文件夹中,我有名为CSS,js等的单独文件夹。其中包含各种js和CSS。

,我有一个名为2.client的文件夹(在这里,我有AngularJs代码,例如controllers.js,services.js)

我正在使用Webpack捆绑我的客户代码。

const path = require('path');
const glob = require('glob');
const CleanWebpackPlugin = require('clean-webpack-plugin');
// const CopyWebpackPlugin = require('copy-webpack-plugin');


const outputDirectory = 'dist';

module.exports = {
  mode: 'development',
  target: 'web',
  entry: {
    app: glob.sync('./client/*.js'),
  },
  output: {
    path: path.resolve(__dirname, outputDirectory),
    filename: '[name].bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          query: {
            presets: ['env', 'stage-0'],
          },
        },
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader'],
      },
      {
        test: /\.(png|woff|woff2|eot|ttf|svg|jpg)$/,
        loader: 'url-loader?limit=100000',
      },
    ],
  },
  devServer: {
    port: 3005,
    open: false,
    disableHostCheck: true,
    proxy: {
      '/': 'http://localhost:8005',
    },
  },
  plugins: [
    new CleanWebpackPlugin([outputDirectory]),
    // new CopyWebpackPlugin([
    //   { from: 'public/assets' },
    // ]),
  ],

};

我只是捆绑我的客户文件夹并将其编译为app.bundle.js, 如何编制资产?

注意:我正在使用AngularJs v1。

1 个答案:

答案 0 :(得分:0)

Webpack从每个入口点(you could have more than one entry point)开始并创建一个dependency graph。通过使用require和import语句将文件/资产导入到应用程序中后,它们会添加到依赖关系图中。

您的问题中尚不清楚的是客户文件夹与公用/资产文件夹之间的关系,以及它们是否已链接。但是,如果您的客户端文件夹中的文件都不依赖(要求,导入)您的public / assets文件夹中的任何资产,那么它们将不会出现在webpack的依赖图中,因此不会被编译和捆绑。 / p>