gpt4 book ai didi

javascript - 在 webpack 中包含第三方库

转载 作者:数据小太阳 更新时间:2023-10-29 05:37:44 24 4
gpt4 key购买 nike

我正在尝试使用 webpack 将插件 ( freezeframe plugin) 添加到我的应用程序中,但我无法理解如何操作。我从我的应用程序本地提供这个文件,而不是从 cdn 或 npm/bower。我已经进行了全面搜索以尝试解决这个问题,但一直无法接近。

我的 webpack 文件如下所示:

const webpack = require('webpack');
const conf = require('./gulp.conf');
const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin');
const autoprefixer = require('autoprefixer');

module.exports = {
module: {
preLoaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'eslint'
}
],

loaders: [
{
test: /.json$/,
loaders: [
'json'
]
},
{
test: /\.gif$/,
loader: 'url-loader',
query: { mimetype: 'image/gif' }
},
{
test: /\.svg$/,
loader: 'svg-loader?pngScale=2'
},
{
test: /\.(eot|woff|woff2|ttf|svg|png|jpg)$/,
loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
},
{
test: /\.(css|scss)$/,
loaders: [
'style',
'css',
'sass',
'postcss'
]
},
{
test: /\.js$/,
exclude: /node_modules/,
loaders: [
'babel',
]
},
{
test: /.vue$/,
loaders: [
'vue'
]
}
]
},
vue: {
postcss: [
require('autoprefixer')({
browsers: [
'Android >= 2.3',
'BlackBerry >= 7',
'Chrome >= 9',
'Firefox >= 4',
'Explorer >= 9',
'iOS >= 5',
'Opera >= 11',
'Safari >= 5',
'OperaMobile >= 11',
'OperaMini >= 6',
'ChromeAndroid >= 9',
'FirefoxAndroid >= 4',
'ExplorerMobile >= 9'
]
}),
]
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.NoErrorsPlugin(),
new HtmlWebpackPlugin({
template: conf.path.src('index.html')
}),
new webpack.ProvidePlugin({
$: 'jquery',
jquery: 'jquery',
'window.jQuery': 'jquery',
jQuery: 'jquery',
slick: 'slick-carousel'
})
],
resolve: {
extensions: ['', '.js', '.css', '.scss'],
alias: {
'jQuery': path.join(__dirname, 'node_modules', 'jquery', 'dist', 'jquery')
}
},
postcss: () => [autoprefixer({
browsers: [
'Android >= 2.3',
'BlackBerry >= 7',
'Chrome >= 9',
'Firefox >= 4',
'Explorer >= 9',
'iOS >= 5',
'Opera >= 11',
'Safari >= 5',
'OperaMobile >= 11',
'OperaMini >= 6',
'ChromeAndroid >= 9',
'FirefoxAndroid >= 4',
'ExplorerMobile >= 9'
]
})],
debug: true,
devtool: 'source-map',
output: {
path: path.join(process.cwd(), conf.paths.tmp),
filename: 'index.js'
},
entry: `./${conf.path.src('index')}`
};

我以为我在我的 vue 组件中写了 require('./assets/freezeframe/freezeframe.js'); 但它随后提示未定义 jquery。我通过 npm 安装了 jquery,我已经在使用另一个使用 jquery 的插件,如下所示:

import 'slick-carousel';
const imagesLoaded = require('imagesloaded');

export default {
name: 'Slider',
props: ['images', 'component'],
mounted () {
var that = this;
$(function() {
imagesLoaded('.js-component-slider',() => {
$(that.$el).slick({
adaptiveHeight: true,
infinite: false
});
});
});
}
}

我现在不知道该怎么办。我不想在我的 index.html 的顶部/底部包含另一个 jquery 和插件文件,因为我希望它们捆绑在一起。

唯一令人痛苦的事情是这个插件不在 npm 中,而且我没有使用 bower。

更新:

我看过这个问题add-js-file但我已经尝试对插件执行此操作,但仍然收到错误消息,即当我需要('nameofffile')时它未被包含

最佳答案

所以在搜索了一整天后,我发现我必须填充插件,因为它没有使用 module.export。 shim plugin这意味着我可以这样写:您还需要安装 exports-loader

const freezeframe = require("exports?freezeframe!./assets/freezeframe/freezeframe.js");

在我的 vue 文件中。然后,当我将它添加到 index.html 中时,我就可以像以前一样使用它了

关于javascript - 在 webpack 中包含第三方库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40932843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com