我尝试使用slick plugin版本2.6.1加载webpack,到目前为止没有成功。
我需要将jquery加载为全局变量和版本2.2.4(因为我还有其他旧的插件需要管理),所以我在 webpack中设置了 ProvidePlugin .config.js 文件:
const webpack = require('webpack');
const nodeEnv = process.env.NODE_ENV || 'production';
module.exports = {
devtool: 'source-map',
entry: { filename: './src/js/main.js' },
output: { filename: './dist/js/bundle.js' },
module: {
loaders: [{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
}]
},
plugins: [
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
jquery: 'jquery'
}),
new webpack.DefinePlugin({
'process.env': { NODE_ENV: JSON.stringify(nodeEnv) }
})
]
};
我的 main.js 文件如下:
import 'slick-carousel';
console.log('jquery version: ', $.fn.jquery);
console.log($.fn.slick);
bundle.js 文件由webpack生成,其中包含以下日志:
Version: webpack 2.6.1
Time: 1490ms
Asset Size Chunks Chunk Names
./dist/js/bundle.js 616 kB 0 [emitted] [big] filename
./dist/js/bundle.js.map 794 kB 0 [emitted] filename
[0] ./~/jquery/dist/jquery.js 258 kB {0} [built]
[1] ./~/slick-carousel/slick/slick.js 84.3 kB {0} [built]
[2] ./src/js/main.js 1.52 kB {0} [built]
[3] ./~/slick-carousel/~/jquery/dist/jquery.js 268 kB {0} [built]
jQuery被加载两次:第一个在全局环境中,版本2.2.4,第二个是版本3.2.1(版本对我来说太近了,我不想要)作为依赖包含在slick中,我想。
将其加载到html页面,我在浏览器开发工具中输入以下日志:
jquery version: 2.2.4
undefined
因此,jquery已正确加载但光滑不是。
我错过了什么?
谢谢
答案 0 :(得分:2)
我找到了适合我的解决方案:
添加到js
文件中:
import $ from 'jquery';
import 'slick-carousel';
添加到scss
文件中:
$slick-font-path: "/node_modules/slick-carousel/slick/fonts/" !default;
$slick-font-family: "slick" !default;
$slick-loader-path: "/node_modules/slick-carousel/slick-carousel/slick/" !default;
$slick-arrow-color: black !default;
@import "~slick-carousel/slick/slick.scss";
@import "~slick-carousel/slick/slick-theme.scss";
答案 1 :(得分:1)
问题是我的 package.json :我在依赖项属性和 jquery 中有 slick-carousel 在 devDependencies 中。
在依赖项中移动 jquery 解决了我的问题。