forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwebpack.js
More file actions
1 lines (1 loc) · 2.19 KB
/
Copy pathwebpack.js
File metadata and controls
1 lines (1 loc) · 2.19 KB
1
if("object"!=typeof exports||"object"!=typeof module)throw new Error("This plugin works only in a CommonJS environment");var infer=require("../lib/infer"),tern=require("../lib/tern");function isArray(v){return"[object Array]"==Object.prototype.toString.call(v)}require("./commonjs"),require("./es_modules");var fs=require("fs"),path=require("path"),ResolverFactory=require("enhanced-resolve").ResolverFactory,SyncNodeJsInputFileSystem=require("enhanced-resolve/lib/SyncNodeJsInputFileSystem");function getResolver(modules,configPath){var config={unsafeCache:!0,modules:modules||["node_modules"],extensions:[".js",".jsx",".json"],aliasFields:["browser"],mainFields:["browser","web","browserify","main"],fileSystem:new SyncNodeJsInputFileSystem},webpackConfig=configPath&&fs.existsSync(configPath)?require(configPath):null;"function"==typeof webpackConfig&&(webpackConfig=webpackConfig());var resolveConfig=webpackConfig&&webpackConfig.resolve;return resolveConfig&&Object.keys(resolveConfig).forEach(function(key){if("packageMains"===key)config.mainFields=resolveConfig[key];else if("root"===key){var roots=resolveConfig[key];isArray(roots)?config.modules=roots.concat(config.modules):config.modules.unshift(roots)}else if("fallback"===key){var fallback=resolveConfig[key];isArray(fallback)?config.modules=config.modules.concat(fallback):config.modules.push(fallback)}else"modules"===key?config.modules=config.modules.concat(resolveConfig[key]):config[key]=resolveConfig[key]}),ResolverFactory.createResolver(config)}function resolveToFile(resolver,name,parentFile){var projectDir=infer.cx().parent.projectDir,fullParent=path.resolve(projectDir,parentFile);try{return resolver.resolveSync({},path.dirname(fullParent),name)}catch(e){return console.log(e.stack),""}}tern.registerPlugin("webpack",function(server,options){var configPath=options.configPath||"./webpack.config.js",modules,resolver=getResolver(options.modules||["node_modules"],configPath=path.resolve(server.options.projectDir,configPath));server.loadPlugin("commonjs"),server.loadPlugin("es_modules"),server.mod.modules.resolvers.push(function(name,parentFile){var resolved=resolveToFile(resolver,name,parentFile);return resolved&&infer.cx().parent.normalizeFilename(resolved)})});