如何通过ES6导入包含Foundation 6 JS文件?

inf*_*-vv 5 javascript browserify gulp babeljs

我正在使用浏览器+ babelify来编译我的JS.

我的任务看起来像这样:

import config from '../config.json';

import gulp from 'gulp';
import browserify from 'browserify';
import babelify from 'babelify'
import browserSync from 'browser-sync';
import babel from 'gulp-babel';
import source from 'vinyl-source-stream';


function onError(error) {
    console.log(error.toString());
    this.emit('end');
}

export function dev() {
    return browserify({
        entries: 'src/js/main.js',
        debug: true,
        extensions: ['.js', '.json', '.es6']
    })
        .transform(babelify)
        .bundle()
        .on('error', onError)
        .pipe(source('main.js'))
        .pipe(gulp.dest('public/js'))
        .pipe(browserSync.stream());
}


gulp.task('js:dev', dev);
Run Code Online (Sandbox Code Playgroud)

src/js/main.js我尝试导入Foundation JS模块.该文件只包含一行:

import 'foundation-sites/js/foundation.util.motion';
Run Code Online (Sandbox Code Playgroud)

编译后我得到一些非编译的基础模块,其中包含一些browserify和babelify代码:

在此输入图像描述

但!我试图将文件复制node_modules到src文件夹并导入它:

import './inc/app';
Run Code Online (Sandbox Code Playgroud)

在这种情况下,al工作正常:

在此输入图像描述

为什么?有什么神奇之处?什么是正确的方法?

Teo*_*hew 3

问题是您正在尝试导入 Foundation-sites 包的源文件。您必须使用捆绑版本或已在node-modules/foundation-sites/dist/plugins/foundation.util.motion.

然后用这个替换你的导入,它将起作用:

import 'foundation-sites/dist/plugins/foundation.util.motion';
Run Code Online (Sandbox Code Playgroud)