I am working on using Zurb Foundation with WebPack and NPM, without Bower.
The problem I am encountering is the same as this below:
https://github.com/zurb/foundation-sites/issues/7386
Essentially, when installing foundation-sites via NPM, there are references to a module "foundation" that is not found. The error:
Module not found: Error: Cannot resolve module 'foundation' in c:\Users\Matt\Documents\Projects\test\node_modules\foundation-sites\dist
@ ./~/foundation-sites/dist/foundation.js
Here's the package.json:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server"
},
"author": "",
"license": "ISC",
"dependencies": {
"foundation-sites": "6.0.5",
"webpack": "~1.12.6",
"webpack-dev-server": "~1.2",
"jquery": "2.1.1"
}
}
And here is webpack.config.js:
var path = require("path");
var webpack = require("webpack");
module.exports = {
entry: {
main: "./app/js/main.js"
},
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{ test: /\.css$/, loader: "style!css" },
{
test: /\.scss$/,
loaders: ["style", "css", "sass"]
},
{ test: /\.vue$/, loader: 'vue' }
],
resolve: {
modulesDirectories: ['node_modules']
}
},
sassLoader: {
includePaths: [path.resolve(__dirname, "./node_modules/foundation-sites/scss/")]
},
devServer: {
proxy: {
'/api/*': {
target: 'http://localhost:4567',
secure: false
}
}
}
};
I can work around this by including foundation via bower instead, but I want to eliminate bower and use only NPM.
I have same problem, but I don't want have two .js files (vendor and app)!
For me, everything need be on a single file, so, I make this:
In webpack.conf.js, use externals (maybe have another way without external, but for me, this is sufficient):
externals: {
jQuery: 'jQuery',
foundation: 'Foundation'
},
create a file in your source folder (any name, like /libs/foundation.js):
// jQuery
var $ = require('jquery');
global.jQuery = $;
// if you want all features of foundation
require('./node_modules_folder/foundation-sites/dist/foundation.js');
// if you want only some features
// require('./node_modules/what-input/what-input');
// require('./node_modules/foundation-sites/js/foundation.core');
// require('./node_modules/foundation-sites/js/....');
export default Foundation;
now, you can use Foundation in any js using following syntax:
import Foundation from './libs/foundation';