Есть ли способ импортировать модули вне каталога приложения, используя babel? - PullRequest
0 голосов
/ 11 мая 2018

Это может быть глупый вопрос, но я думаю, что застрял здесь.

В случае, если я использую babel для компиляции моего koa приложения, у сгенерированной сборки есть некоторые проблемы с зависимостями вне каталога приложения.

Структура папок

root/
  node_modules
  auth // auth app
  blog // blog app
  config // common config for both apps
  models // database models common for both apps
  logs // app logs
  builds
    auth // auth build
    blog // blog build
  .env // envrionment settings
  .babelrc // babel config
  package.json

package.json

"scripts": {
  "auth": "nodemon auth/ --exec babel-node",
  "blog": "nodemon auth/ --exec babel-node",
  "build:auth": "babel auth -d builds/auth --copy-files",
  "build:blog": "babel blog -d builds/blog --copy-files"
},
"devDependencies" {
  "babel-cli": "^6.26.0",
  "babel-preset-env": "^1.6.1",
  "nodemon": "^1.8.1"
}

Когда я запускаю npm run build:auth, создается сборка для приложения auth, но только файлы в каталоге auth переносятся и копируются, есть ли способ получить файлы из каталога config и model, также скопированные в build/auth каталог.

Помощь очень ценится.

1 Ответ

0 голосов
/ 11 мая 2018

Исправлено то же самое с помощью webpack, вот решение, если вы столкнулись с подобной проблемой

Добавьте webpack.config.js в ваш root

const path = require('path');
const webpack = require('webpack');
const nodeExternals = require('webpack-node-externals');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');


module.exports = {
  output: {
    filename: 'bundle.js'
  },
  target: 'node',
  externals: [nodeExternals()],
  devtool: 'source-map',
  resolve: {
    modules: [path.join(__dirname, 'node_modules')]
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        include: [path.join(__dirname, 'utility'), path.join(__dirname, 'model'), path.join(__dirname, 'config'), path.join(__dirname, 'middleware')],
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['env']
          }
        }
      }
    ]
  },
  plugins: [
    new UglifyJSPlugin({
      exclude: /node_modules/
    })
  ]
}

И установить некоторые зависимости, используя npm

npm install --save-dev babel-core babel-loader babel-polyfill uglifyjs-webpack-plugin webpack-node-externals

Модифицировал auth/index.js и добавил import "babel-polyfill"; вверху.

Дайте мне знать, если у вас возникнут какие-либо проблемы.

...