@uiw-admin/plugins
Version:
94 lines (92 loc) • 3.75 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
var _temp = require("./temp");
var _chokidar = _interopRequireDefault(require("chokidar"));
/**
* 对项目入口文件进行自动生成
* */
var InitIndexWebpackPlugin = /*#__PURE__*/function () {
function InitIndexWebpackPlugin(props) {
(0, _classCallCheck2["default"])(this, InitIndexWebpackPlugin);
(0, _defineProperty2["default"])(this, "globalCss", false);
(0, _defineProperty2["default"])(this, "swr", false);
(0, _defineProperty2["default"])(this, "SWRConfig", undefined);
(0, _defineProperty2["default"])(this, "routeType", undefined);
if (Reflect.has(props || {}, 'swr')) {
if (typeof Reflect.get(props || {}, 'swr') === 'boolean') {
this.swr = props === null || props === void 0 ? void 0 : props.swr;
} else if ((0, _typeof2["default"])(Reflect.get(props || {}, 'swr')) === 'object') {
this.swr = true;
this.SWRConfig = props === null || props === void 0 ? void 0 : props.swr;
}
}
if (Reflect.has(props || {}, 'routeType')) {
this.routeType = props === null || props === void 0 ? void 0 : props.routeType;
}
}
(0, _createClass2["default"])(InitIndexWebpackPlugin, [{
key: "init",
value: function init() {
if (_fs["default"].existsSync(_path["default"].resolve(process.cwd(), 'src/global.css'))) {
this.globalCss = true;
} else {
this.globalCss = false;
}
var initIndexs = (0, _temp.getInitIndexTemp)({
swr: this.swr,
SWRConfig: this.SWRConfig,
routeType: this.routeType,
globalCss: this.globalCss
});
if (!_fs["default"].existsSync(_path["default"].resolve(process.cwd(), 'src/.uiw'))) {
_fs["default"].mkdirSync(_path["default"].resolve(process.cwd(), 'src/.uiw'));
}
_fs["default"].writeFileSync(_path["default"].resolve(process.cwd(), 'src/.uiw/index.tsx'), initIndexs, {
encoding: 'utf-8',
flag: 'w+'
});
_fs["default"].writeFileSync(_path["default"].resolve(process.cwd(), 'src/.uiw/index.css'), (0, _temp.getInitCssTemp)(), {
encoding: 'utf-8',
flag: 'w+'
});
}
}, {
key: "apply",
value: function apply(compiler) {
var _this = this;
compiler.hooks.initialize.tap('InitIndexWebpackPlugin', function () {
_this.init();
_this.listenGlobalCss();
});
}
// 监听 global.css 文件是否删除或添加
}, {
key: "listenGlobalCss",
value: function listenGlobalCss() {
var _this2 = this;
if (process.env.NODE_ENV === 'development') {
_chokidar["default"].watch(_path["default"].resolve(process.cwd(), 'src/global.css'), {
cwd: _path["default"].resolve(process.cwd(), 'src')
}).on('all', function (event, path) {
if (['add', 'unlink'].includes(event) && /global.css/.test(path)) {
_this2.init();
}
});
}
}
}]);
return InitIndexWebpackPlugin;
}();
var _default = InitIndexWebpackPlugin;
exports["default"] = _default;
module.exports = exports.default;