12345678910111213141516171819202122232425262728293031323334353637383940 |
- /**
- * Copyright (c) 2015-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- 'use strict';
- const loaderUtils = require('loader-utils');
- const path = require('path');
- module.exports = function getLocalIdent(
- context,
- localIdentName,
- localName,
- options
- ) {
- // Use the filename or folder name, based on some uses the index.js / index.module.(css|scss|sass) project style
- const fileNameOrFolder = context.resourcePath.match(
- /index\.module\.(css|scss|sass)$/
- )
- ? '[folder]'
- : '[name]';
- // Create a hash based on a the file location and class name. Will be unique across a project, and close to globally unique.
- const hash = loaderUtils.getHashDigest(
- path.posix.relative(context.rootContext, context.resourcePath) + localName,
- 'md5',
- 'base64',
- 5
- );
- // Use loaderUtils to find the file or folder name
- const className = loaderUtils.interpolateName(
- context,
- fileNameOrFolder + '_' + localName + '__' + hash,
- options
- );
- // Remove the .module that appears in every classname when based on the file and replace all "." with "_".
- return className.replace('.module_', '_').replace(/\./g, '_');
- };
|