【问题标题】:Bundle JS files with webpack scripts?将 JS 文件与 webpack 脚本捆绑在一起?
【发布时间】:2018-07-03 22:09:36
【问题描述】:

我是 webpack 的超级新手,我似乎没有找到一种方法来捆绑 JS 文件,就像我使用 Gulp 所做的那样,以一种非常简单的方式。我一直在搜索,但没有找到任何直接的答案。

现在我正在使用 package.json 文件创建两个缩小的文件,但我希望有一个:

"scripts": {
    "stand-alone": "concurrently 'webpack --config=webpack.config.js src/whatever.vue demos/build.min.js --output-library=whatever1'  'webpack --config=webpack.config.js src/whatever2.js demos/mixin.min.js --output-library=whatever2'",
},

那么我的webpack.config.js 是这样的:

const webpack = require('webpack');

module.exports = {
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.js'
    }
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          loaders: {
            scss: 'vue-style-loader!css-loader!sass-loader',
            js: 'babel-loader'
          }
        }
      },
      {
        test: /\.js$/,
        use: {
          loader: 'babel-loader',
        }
      }
    ]
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false,
        drop_console: false,
      }
    })
  ],
};

【问题讨论】:

    标签: javascript npm webpack bundle npm-scripts


    【解决方案1】:

    我相信你正在寻找entry points。

    在您的webpack.config.js 模块导出对象中:

    定义entry 属性:

     entry: {
        app: ['./path/to/file.js', './path/to/file2.js'],
      },
    

    定义output 属性:

     output: {
       path: '/path/to/assets', // ex. '../../wwwroot/dist'
       filename: '[name].js', // Substitutes [name] with the entry name, results in app.js
       publicPath: '/'
     },
    

    将您的脚本更改为:

    "scripts": {
        "stand-alone": "webpack --config=webpack.config.js",
    },
    

    如果你使用的是 Vue + Webpack,我建议你看看vue-cli 并使用 webpack 模板生成一个项目。它更高级,但您可以查看文档并了解您缺少什么。

    运行以下命令:

    npm install -g vue-cli // install vue cli globally
    
    vue init webpack my-project // create a sample project
    

    如果要生成多个输出文件,可以有多个入口点,如下所示:

      entry: {
        app: ['./path/to/file.js', './path/to/file2.js'],
        mixins: './path/to/mixins.js',
        vendors: ['./path/to/vendor.js', './path/to/vendor2.js']
      },
    

    这将写入磁盘./path/to/assets/app.js、./path/to/assets/mixins.js、/path/to/assets/vendors.js。

    【讨论】:

    • 如果我想同时保留单独的文件,就像我现在使用当前脚本和捆绑文件一样,我是否需要为捆绑脚本创建不同的 webpack.config 文件?我不能在同一个地方做吗?
    • 我更新了答案,让你可以看到如何添加多个入口点,从而产生多个输出文件。我希望这就是您正在寻找的。​​span>
    猜你喜欢
    • 2016-08-23
    • 2022-09-27
    • 2018-03-12
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多