Browserify外部不起作用

时间:2017-06-29 13:30:37

标签: browserify

我正在尝试将捆绑分成两部分。例如,将一个包含所有依赖项的包移动到单独的包文件中。

要从主包中排除包,我将其声明为外部:

browserify({
  entries: ['./src/index.js'],
  extensions: ['.js'],
  debug: true
})
.external(['PdfKit']) // Specify all vendors as external source
.bundle()
.pipe(source('app.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest('dist/'));

问题是app.js包含了所有依赖项的PdfKit包的完整代码。

这里有完整的工作演示:https://github.com/motz-art/browserify-external-test

如何从app.js中删除一些包含所有依赖项的(但不是全部)包?

1 个答案:

答案 0 :(得分:0)

package project; import javafx.application.Application; import javafx.concurrent.Task; import javafx.concurrent.WorkerStateEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.ProgressBar; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Progress extends Application { StackPane stack = new StackPane(); Scene scene = new Scene(stack, 400, 800); // Progress Bar ProgressBar progressBar = new ProgressBar(); public void start(Stage primaryStage) throws Exception { // Progress Bar stack.getChildren().add(progressBar); progressBar.setTranslateX(0); progressBar.setTranslateY(0); progressBar.setProgress(0); Task<Void> sleeper = new Task<Void>() { @Override protected Void call() throws Exception { try { Thread.sleep(1000); } catch (InterruptedException e) { } return null; } }; sleeper.setOnSucceeded(new EventHandler<WorkerStateEvent>() { @Override public void handle(WorkerStateEvent event) { progressBar.setProgress(0.1); } }); new Thread(sleeper).start(); primaryStage.setScene(scene); primaryStage.setTitle("Title"); primaryStage.show(); } public static void main(String[] args) { launch(); } } 方法具有案例意义。并且必须匹配external中显示的包名称。

在我的情况下,require被标记为外部,但index.js引用'PdfKit',因此过滤器返回'pdfKit',但是它自己的包被解析,因为窗口具有案例性。