Невозможно создать минимизированную библиотеку JavaScript для Web с Webpack & Babel без использования функции require () - PullRequest
0 голосов
/ 30 апреля 2019

Я хотел бы использовать последние конструкции JavaScript, не поддерживаемые всеми браузерами, поэтому я обратился к webpack и Babel.

Мой код не содержит требований, но вывод выводит.Это вызывает Uncaught ReferenceError: require is not defined, когда вывод загружается в браузер.

.babelrc

{
  "plugins": [
    "@babel/plugin-transform-runtime"
  ],
  "presets": [
    "@babel/preset-env"
  ]
}

webpack.config.js

const MinifyPlugin = require('babel-minify-webpack-plugin');

module.exports = {
  target: 'web',
  mode: 'production',
  entry: './uuuu.js',
  output: { filename: 'uuuu.min.js' },   
  plugins: [
    new MinifyPlugin(
      {},
      {
        minifyPreset: require('babel-preset-minify')
      }
    )
  ],
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
        }
      }
    ]
  }
};

Что делать?

1 Ответ

0 голосов
/ 30 апреля 2019

У меня был большой опыт использования angular cli для создания библиотек JavaSscript NPM, даже если они не являются Angular-проектами. Вы получаете потрясающий конвейер сборки и тестирования и можете удалить зависимости Angular для создания универсальных библиотек JavaScript.

тип

npm install -g @angular/cli

тогда

ng new my-lib --create-application=false

перейдите во вновь созданную папку и создайте библиотеку

ng generate library my-lib

Перейдите в папку projects / my-lib и удалите Angular-зависимости из peerDependencies в папке package.json, а также удалите демонстрационный Angular-компонент, модуль и службу.

Теперь у вас есть проект TypeScript мирового класса, готовый для сборки и развертывания в NPM.

Тип

ng build my-lib

затем перейдите в dist / my-lib и наберите

npm publish

Зачем пытаться запустить конвейер сборки и тестирования, если позади вас есть опыт команды Angular?

...