javascript - 如何在 4 个文件上禁用 AMD 并使用 webpack 按顺序加载它们

标签 javascript reactjs webpack requirejs amd

我需要在 4 个文件上禁用 AMD 并首先加载 video.js,然后再加载其他 3 个文件,因为它们依赖于它。当我尝试在 webpack.config.js 中这样做时,如下所示:

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

module.exports = {
  entry: './src/main.js',
  output: {
    path: __dirname + '/public',
    filename: 'bundle.js'
  },
  devServer: {
    inline: true,
    contentBase: './src',
    port: 3333
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        'NODE_ENV': JSON.stringify('production')
      }
    })
  ],
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules|lib/,
        loader: 'babel',
        query: {
          presets: ['es2015', 'react', 'stage-2'],
          plugins: ['transform-class-properties']
        }
      },
      {
        test: /\.json$/,
        loader: 'json-loader'
      },
      {
        test: /[\/\\]lib[\/\\](video|playlist|vpaid|overlay)\.js$/,
        exclude: /node_modules|src/
        loader: 'imports?define=>false'
      }
    ]
  }
}

它实际上不起作用,因为它只是加载 video.js (禁用 AMD)并完全忽略其他 3 个文件。

我的文件夹结构是这样的:

▾ lib/
    overlay.js
    playlist.js
    video.js
    vpaid.js
▸ node_modules/
▾ public/
    200.html
    bundle.js
▾ src/
    App.js
    index.html
    main.js
  LICENSE
  package.json
  README.md
  webpack.config.js

现在,我发现了一些让我退后一步的东西,因为现在甚至连 video.js 也无法加载:

require('imports?define=>false!../lib/video.js')
require('imports?define=>false!../lib/playlist.js')
require('imports?define=>false!../lib/vpaid.js')
require('imports?define=>false!../lib/overlay.js')

而只是抛出这些类型的警告:

WARNING in ./~/imports-loader?define=>false!./lib/video.js
Critical dependencies:
15:415-422 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
 @ ./~/imports-loader?define=>false!./lib/video.js 15:415-422

WARNING in ./~/imports-loader?define=>false!./lib/playlist.js
Critical dependencies:
10:417-424 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
 @ ./~/imports-loader?define=>false!./lib/playlist.js 10:417-424

WARNING in ./~/imports-loader?define=>false!./lib/vpaid.js
Critical dependencies:
4:113-120 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
 @ ./~/imports-loader?define=>false!./lib/vpaid.js 4:113-120

WARNING in ./~/imports-loader?define=>false!./lib/overlay.js
Critical dependencies:
10:416-423 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
 @ ./~/imports-loader?define=>false!./lib/overlay.js 10:416-423

所以,我的问题是,如何在 webpack.config.js 中实现此功能,这样我就不会收到这些警告?

最佳答案

我已经解决了这个问题!为了使这项工作有效,你需要这个:

 {
    test: /[\/\\]lib[\/\\](video|playlist|vpaid|overlay)\.js$/,
    exclude: /node_modules|src/
    loader: 'imports?define=>false'
  }

还有这个

require('script-loader!../lib/video.js')
require('script-loader!../lib/playlist.js')
require('script-loader!../lib/vpaid.js')
require('script-loader!../lib/overlay.js')

一起!

现在,如果您使用它(而不是脚本加载器):

require('imports?define=>false!../lib/video.js')
require('imports?define=>false!../lib/playlist.js')
require('imports?define=>false!../lib/vpaid.js')
require('imports?define=>false!../lib/overlay.js')

这行不通! (您需要 import-loader 和 script-loader 协同工作。

关于javascript - 如何在 4 个文件上禁用 AMD 并使用 webpack 按顺序加载它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488225/

相关文章:

javascript - Antd 的 getFieldDecorator 用于其他包

javascript - 模拟器中的文件系统重定向不起作用

reactjs - 减少 React.min.js 和 React-dom.min.js 的 Browserify 包

javascript - 如何取消react中的setTimeout时间

webpack - Redux-在热重装期间如何保持 reducer 状态

vue.js - [Vue 警告] : The client-side rendered virtual DOM tree is not matching server-rendered content ( Nuxt/Vue/lerna monorepo )

javascript - html 表格在鼠标悬停时呈现/移动

javascript - 从 mbutil 生成的图 block 不会使用 leafletjs 进行渲染

node.js - req.file 的 console.log 上 req.file 的值未定义的错误

typescript - webpack-Typescript source-map,ts的源文件就是编译后的js文件